iOS布局有很多种方式,找到一种适合你的并且被大家都认可的框架,然后熟练掌握它就可以了。我的选择Masonry。
masonry框架解读思路
masonry总共有十个类文件,其中最总要的有四个,View+MASAdditions、MASConstraintMaker、MASConstraint、NSArray+MASAdditions。熟练掌握这四个类你就掌握了masonry的核心。
这四个类也可以分解开来,View+MASAdditions和NSArray+MASAdditions可以归纳为一组,一个是对单个view设置约束,一个是对一组view设置约束;MASConstraintMaker内包含非常多的MASConstraint对象负责设置约束;MASConstraint是约束的属性。
在View+MASAdditions和NSArray+MASAdditions有三分方法,mas_makeConsstaint、mas_updateMakeConsstaint、mas_reMakeConsstaint三个方法,这三个方法分别负责添加,更新,重设约束,在回调中通过MASConstraintMaker对象给视图添加约束条件。
masonry更新约束注意事项
在vc中,通过- (void)updateViewConstraints{ }方法来更新约束,在view中通过 - (void)updateConstraints { }方法更新约束,在masonry中更新约束并不会立即生效,需要我们来触发。setNeedsUpdateConstraints方法告诉视图有约束需要跟新(推测内部是添加了监听事件),updateConstraintsIfNeeded这个方法并不是必须的,但是有时候不调用就无法起到我们的效果。但是,官方都是这么写的,从约束的更新原理上讲,这应该写上。出发约束更新的方法layoutIfNeeded。