IOS开发心得汇总

来源:互联网 发布:阿菲金软件配置 编辑:程序博客网 时间:2024/06/05 20:07

1.IOS在做UI布局适配时,如果View固定不滑动,高度和宽度最好用比例来设定;如果是一个可滑动View,高度和宽度的尺寸尽量用固定的。

2.removeFromSuperview,就是一个节点删除的操作,执行这个方法,就等于在树形结构中找到该节点,从树型数据结构中删除该节点及其子节点,而并非只是删除该节点自己。同时,另一个操作就是把该对象从响应者链中移除。

执行removeFromSuperview方法,只是该视图不在屏幕中显示,并没有将该视图从内存中移除。所以我们如果需要使用该视图,不需要再次创建,而是直接addSubview就可以了。

3.设置UIButton上Title的对齐方式,button.contentHorizontalAlignment =UIControlContentHorizontalAlignmentRight

4.内容复制:UIPasteboard *pboard = [UIPasteboard generalPasteboard];

5.在UIWindow上加控件的时候,要在控制器的viewDidAppear方法的调用或者之后添加。原因:如果在viewDidAppear之前加,此时View还没被添加到UIWindow上,控件会先加到Window上,控制器的View在viewDidAppear方法里才被加到Window上,就会造成如下层级结构:UIWindow(底层)——控件(中间层)——当前控制器View(最上层),控件会被控制器的View挡住。

6.设置透明的navgationBar:可以设置navgationBar的setBackgroundImage为一张透明的图片并将shadowImage(navigationBar下的那条线)设置成[UIImage new],同时设置延伸区域self.edgesForExtendedLayout =UIRectEdgeAll(底部控件从(0.0)开始)UIRectEdgeNone(底部控件从navigationBar底部开始)。

7.在xib中给UILabel添加约束时,如果不设置高度或者宽度相等同自适应,根据实际字数确定长度、高度。

8.LauchScreen中的UIImageView上的图片在模拟器上显示,真机不显示。解决方法:尝试重启一下手机,原因:app第一次启动时系统会截取第一次启动图的快照存到沙盒中,之后启动会直接去沙盒中加载这种图片作为启动图。

9.设置UITableView的headerView或footView的高度为0无效,设置成0.01可实现。

10.initWithNibName方法:是延迟加载,这个View上的控件是 nil的,只有到需要显示时,才会不是 nil 。

        loadNibNamed方法:即时加载,用该方法加载的xib对象中的各个元素都已经存在。

11.UIButton上自带两个控件,一个UIImageView,一个UILabel,自定义的时候可修改这两个控件的位置,给Button的setImage就是给自带的imageView添加图片,赋值的时候需要设置forState,否则不显示。

12.xib创建的控制器,在ViewDidLoad方法里调用self.View.bounds不会自动适配,尺寸还是xib里的尺寸,如果需要设置tableView的headerView,headerView的尺寸也需要重新设置。

13.点语法的setter方法里不能再调用self.xxx,会导致无限调用setter方法,造成死循环。

14.ios8后程序每次运行都会修改沙盒路径,但系统会把旧路径的内容移到新路径里。

15.继承一个有xib文件的父类控制器,初始化时要用:

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil

{

    self = [super initWithNibName:NSStringFromClass([self.superclass class])bundle:nibBundleOrNil];

    return self;

}

16.避免UITableView和UICollectionView的Cell显示错乱,  [cell.contentView.subviewsmakeObjectsPerformSelector:@selector(removeFromSuperview)];





0 0
原创粉丝点击