封装:为了避免代码的重复使用,提高性能;需求变动的时候,扩展性很强。需要更改的地方不多。
1、Xib的加载(Xib这样使用的时候是一个资源文件,所以不要传路径,直接写的文件名字,九宫格就可以用Xib):
返回值是一个数组类型,可以使用UIView接收;
[NSBundle mainBundle] loadNibNamed:@“appView” over:nil options:nil][0];
[[NSBundle mainBundle] loadNibNamed:@“appView” over:nil options:nil]firstObject[;
Xib:用来描述局部界面,比如说九宫格的每一个单元;
2、重写Set方法时固定写法:
_变量名 = 参数名; 为了防止使用get方法的时候出错;
3、在写代码时,不要使用数字,尽量使用变量名称;
在时用成员变量的时候加上下划线;
在调用自己的时候,直接写self,不要写类名字;
instancetype做返回值类型,不能做参数类型;在使用接受的时候会判断类型的匹配;
4、开发文档划线表示的,代表的是过期了,不介意使用,并不是废弃;
5、一个按钮的内部至少有两个控件:一个lable,一个imageView;
6、字典转模型:
加载plist文件:
NSString *path =[[NSBundle mainBundle]pathForResource:@“**.plist” ofType:nil];
读取文件路径:
[NSArray arrywithcontentofile:path];
创建模型类,创建模型对象;
7、在是用subviews获取子控件的时候,要使用类型强转,它返回的是一个View类型;
8、按钮设置不能点击:button.enbale = NO;
9、改变控件透明度:属性.alpha,范围0(全透明)-1(不透明);
文字属性格式设置:textAlignment(枚举类型的赋值);
设置圆角:(1)设置半径
控件.layer.cornerRadius = 8;
(2)切除多余部分
控件.layer.maskToBounds = YES;
10、动画执行的方法:序列帧动画、头尾式动画、Block动画;
后面两个方法本质上是一样地,block能实现的,头尾式动画使用 代理 也可以实现。代理的性能会好一点;
[ UIView animateWithDuration:2.0 animations:^{
<#code#>
} completion:^(BOOL finished) {
if(finished){
<#code#>
}
}
animations:是执行动画的代码块;
completion:是执行完动画后需要执行的代码;
11、从父控件移除[控件 removeFromSuperview];
当控件是weak修饰的时候可以不用赋值nil;