IOS开发心得汇总
2016-04-07 11:15
417 查看
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.subviews
makeObjectsPerformSelector:@selector(removeFromSuperview)];
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.subviews
makeObjectsPerformSelector:@selector(removeFromSuperview)];
相关文章推荐
- ios 之 autoresizing小解
- ios 之 autoresizing小解
- zz:ios完整学习路线
- ios github使用
- ios 清除缓存
- iOS项目之解析HTML数据
- IOS Masonry介绍与使用实践:快速上手Autolayout
- zz 【转载用于学习】IOS开发技巧--Git的使用
- iOS学习笔记--瀑布流封装
- iOS 隐藏backBarButtonItem
- webrtc ios 端编译错误
- Webrtc IOS下载编译文档
- iOS设计中对Xcode设置中创建PCH文件的过程
- [IOS 开发] automaticallyAdjustsScrollViewInsets属性
- iOS- 利用AFNetworking3.0+(最新AFN) - 实现文件断点下载
- iOS 开发--开源图片处理圆角
- iOS开发扫描二维码
- 关于使用刷新控件的思考
- Xcode批量修改类名(一键修改包括所有的头文件自动改)
- 解析iOS崩溃日志