去年作项目时用到一个第三方自动布局的框架——Masonry,期间碰到过一些问题,如今在此总结一下:ios
1.添加约束后APP崩溃的问题:(全部问题缘由都能归根结底到子view没有成功加到父view上就设置约束)网络
①若是是ios7及ios7如下的系统,崩溃的大部分以前在网络上查过,主要元缘由说“主要是在equalTo的对象指到了父视图的父视图或者父视图同级的子视图上形成的”,后来将约束equalto全都指向了父view或者同级别的view上,以后的确奏效;框架
②若是是ios7以上的系统,系统崩溃的可能缘由:a)尚未将子view添加到父view上就开始添加约束,这样view彻底找不到本身的约束根基在哪里,必然会崩;b)以前遇到过一个设置navigationbar的leftbuttonitem和rightbuttonitem,可是我在viewdidload()方法直接设置约束就会引起崩溃,缘由多是在跳转该界面时(页面push进来时)navigationbar尚未加载完,此时就开始添加buttonitem并设置约束,因此解决方案是延时设置navigationbar的样式:布局
dispatch_after(time, dispatch_get_main_queue(), ^{动画
[XXX];spa
});对象
2.添加约束不起做用的问题:get
①设置的约束不能肯定控件的惟一位置,除非有须要自适应高度的控件,须要其余地方从新控制高度;页面布局
②取消掉全部控件的use autolayout 和autoresize subviews属性,由于这是系统自带的autolayout因此须要去掉才能发挥masonry的用处;it
3)在一些跳转的界面,有的控件尚未加载完就设置约束确定不会起做用的,例如以前我用MJRefresh进行下拉上拉刷新时,页面刚跳转进来时tableview尚未加载完就设置了header,此时header的约束确定不能成功,因此解决方案也是采用延时处理;
最后放一下从网络上摘取的几个刷新布局的方法,给本身mark一下:
这只是目前刚用masonry不久的一点当心得,若是不对,请各位大神指正啊(*^__^*)