iOS开发UI篇 -- 0326应用管理APP
来源:互联网 发布:falcon猎鹰手表知乎 编辑:程序博客网 时间:2024/04/28 08:56
简介:iOS的一些基础知识,还有应用管理App的封装版
学习完“下载app” 和 “疯狂猜图“ 这两个应用,相当于自学摸索半年
Supporting Files:除了源代码之外的资源文件的存放路径
1. 打开终端
2. 显示文件夹:chflags nohidden ~/Library
隐藏文件夹:chflags hidden ~/Library (默认是隐藏的)
这样就可以找到资源库文件夹了
/Users/aplle/资源库/Developer/Xcode/DerivedData
或者
/Users/aplle/Library/Developer/Xcode/DerivedData
当然我们也可以直接覆盖原来的文档。Xcode自带头文件的路径:
/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/System/Library/Frameworks
插件介绍
@property (nonatomic, weak) UIButton *btn;
// 字符串类型使用copy
@property (nonatomic, copy) NSString *str;
// 其他数据类型(NSArray。。。)使用strong
@property (nonatomic, strong) NSArray *apps;
// 基本数据类型assign
@property (nonatomic, assign) NSArray *apps;
模型应该提供一个可以传入字典参数的构造方法
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)xxxWithDict:(NSDictionary *)dict;
instancetype只能用在返回值类型上,不能像id一样用在参数类型上
instancetype比id多一个好处:编译器会检测instancetype的真实类型
// //3. 添加view数据 使用xib
// BJApp *app = self.apps[index];
// UIImageView *iconView = appView.subviews[0];
// iconView.image = [UIImage imageNamed:app.icon];
//
// UILabel *nameLab = appView.subviews[2];
// nameLab.text = app.name;
我们已经使用xib对代码做了简化,但是数据还是暴漏在外面,
VC对于View得内部结构知道的一清二楚,我们需要对数据进行封装
// //3. 添加view数据 自定义BJAppView对数据进行封装
// BJApp *app = self.apps[index];
//
// appView.iconView.image = [UIImage imageNamed:app.icon];
//
// appView.nameLab.text = app.name;
//3. 添加view数据 自定义BJAppView对数据进行进一步封装,在setApp方法中设置数据
BJApp *app = self.apps[index];
appView.app = app;
外界可以传入对应的模型数据给view,view拿到模型数据后给内部的子控件设置对应的数据
________________________________________________________________________________
该App需要掌握一下几点:
•UIView的常见属性和方法
学习完“下载app” 和 “疯狂猜图“ 这两个应用,相当于自学摸索半年
1、xcode项目结构
Images.xcassets:用于存放图片资源Supporting Files:除了源代码之外的资源文件的存放路径
3、显示User中资源库的方法
开始使用mac系统进行iOS开发时,会遇到找不到模拟器所在文件夹。那是因为Library被隐藏了,只要在终端输入下面命令就可以实现显示和隐藏了:1. 打开终端
2. 显示文件夹:chflags nohidden ~/Library
隐藏文件夹:chflags hidden ~/Library (默认是隐藏的)
这样就可以找到资源库文件夹了
4、 修改了系统自带头文件后,Xcode会报错
解决方案:删掉下面文件夹的缓存即可(aplle是电脑的用户名)/Users/aplle/资源库/Developer/Xcode/DerivedData
或者
/Users/aplle/Library/Developer/Xcode/DerivedData
当然我们也可以直接覆盖原来的文档。Xcode自带头文件的路径:
/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/System/Library/Frameworks
5、xcode安装插件的方法
直接打开插件,run一下,退出xcode,run again ,Okay!插件介绍
6、定义属性
// 控件使用weak@property (nonatomic, weak) UIButton *btn;
// 字符串类型使用copy
@property (nonatomic, copy) NSString *str;
// 其他数据类型(NSArray。。。)使用strong
@property (nonatomic, strong) NSArray *apps;
// 基本数据类型assign
@property (nonatomic, assign) NSArray *apps;
7、自定义构造方法(alloc init.....)都是以(instancetype)开头,构造方法都是返回自定义类型
构造方法需要写if(self = [super init])8、字典转模型
字典转模型的过程最好封装在模型内部模型应该提供一个可以传入字典参数的构造方法
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)xxxWithDict:(NSDictionary *)dict;
9、instancetype
instancetype在类型表示上,跟id一样,可以表示任何对象类型instancetype只能用在返回值类型上,不能像id一样用在参数类型上
instancetype比id多一个好处:编译器会检测instancetype的真实类型
#import "MJApp.h"@implementation MJApp- (instancetype)initWithDict:(NSDictionary *)dict{ if (self = [super init]) { self.name = dict[@"name"]; self.icon = dict[@"icon"]; } return self;}/** * 这里使用self,self表示谁调用方法代表谁。如果是BJApp的子类调用这个方法,则代表子类 * * @param dict <#dict description#> * * @return 该对象 */+ (instancetype)appWithDict:(NSDictionary *)dict{ return [[self alloc] initWithDict:dict];}@end
10、封装项目
// //3. 添加view数据 使用xib
// BJApp *app = self.apps[index];
// UIImageView *iconView = appView.subviews[0];
// iconView.image = [UIImage imageNamed:app.icon];
//
// UILabel *nameLab = appView.subviews[2];
// nameLab.text = app.name;
我们已经使用xib对代码做了简化,但是数据还是暴漏在外面,
VC对于View得内部结构知道的一清二楚,我们需要对数据进行封装
// //3. 添加view数据 自定义BJAppView对数据进行封装
// BJApp *app = self.apps[index];
//
// appView.iconView.image = [UIImage imageNamed:app.icon];
//
// appView.nameLab.text = app.name;
//3. 添加view数据 自定义BJAppView对数据进行进一步封装,在setApp方法中设置数据
BJApp *app = self.apps[index];
appView.app = app;
11、MVC
控制器负责加载模型数据,然后将数据给View12、view的封装
如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不让外界关心外界可以传入对应的模型数据给view,view拿到模型数据后给内部的子控件设置对应的数据
#import <UIKit/UIKit.h>@class MJApp;/** * 使用xib的时候,需要将他的继承类改称BJAppView,然后在BJAppView中进行拖线 */@interface MJAppView : UIView/** * 模型数据 */@property (nonatomic, strong) MJApp *app;+ (instancetype)appView;/** * 通过模型数据来创建一个view */+ (instancetype)appViewWithApp:(MJApp *)app;@end
// 重写模型的set方法,在set方法中将模型数据传递给View- (void)setApp:(MJApp *)app{ _app = app; // 1.设置图标 self.iconView.image = [UIImage imageNamed:app.icon]; // 2.设置名称 self.nameLabel.text = app.name;}
13、加载xib的方法
•Xib文件可以用来描述某一块局部的UI界面
•
•Xib文件的加载
Ø方法1
NSArray *objs = [[NSBundlemainBundle]loadNibNamed:@"MJAppView"owner:niloptions:nil];
UIButton *btn = objs[1];
这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中
(如果xib如右图所示,那么objs数组中依次会有3个对象:1个UIView、1个UIButton、1个UISwitch)
Ø方法2
bundle参数可以为nil,默认就是mainbundle
UINib *nib = [UINibnibWithNibName:@"MJAppView"bundle:[NSBundlemainBundle]];
NSArray *objs = [nibinstantiateWithOwner:niloptions:nil];
•在开发阶段,面向开发者的是xib文件;当把应用装到手机上时,xib文件就会转为nib文件
14、项目思路
加载数据,设置界面,封装数据________________________________________________________________________________
该App需要掌握一下几点:
•UIView的常见属性和方法
•九宫格计算方法
•字典转模型
•Xib的使用
•自定义view(view的封装)
•简单的MVC
————————————————————————————————————————————————————————————————————
用模型取代字典的好处
————————————————————————————————————————————————————————————————————
用模型取代字典的好处
•使用字典的坏处
Ø一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲
dict[@"name"] =@"Jack";
NSString *name = dict[@"name"];
Ø手敲字符串key,key容易写错
ØKey如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据
•使用模型的好处
Ø所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业
Ø模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性
Ø使用模型访问属性时,编译器会提供一系列的提示,提高编码效率
app.name =@"Jack”;
NSString *name = app.name;
0 0
- iOS开发UI篇 -- 0326应用管理APP
- iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
- iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
- iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
- iOS开发UI篇—APP主流UI框架结构
- IOS开发 UI篇 APP主流UI框架结构
- iOS开发UI篇—APP主流UI框架结构
- iOS开发UI篇—APP主流UI框架结构
- iOS开发-UI-应用管理实现九宫格界面
- iOS开发UI基础—31在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建
- iOS开发 - 第01篇 - UI基础 - 03 - 应用程序管理
- iOS开发 - 第02篇 - UI进阶 - 09 - App主流UI框架结构
- iOS开发UI高级—16APP主流UI框架结构
- ios开发之UI基础--应用管理xib-九宫格布局
- iOS开发UI篇
- iOS开发UI篇
- iOS 应用的 UI 开发资源
- IOS开发UI基础之综合应用
- Android布局实现圆角边框
- JAVA第一次作业 目标1
- Python学习-第一天
- Android 图片缓存--DisplayImageOptions
- 获取静态TableView选中的cell来执行相应操作
- iOS开发UI篇 -- 0326应用管理APP
- 差网络模拟工具---clumsy
- DialogFragment
- JAVA实战2——近似画圆
- Shell 基本命令
- nmap端口探测原理初探
- nodejs获取参数
- hdu 2276(矩阵快速幂)
- gridx的使用