对于开发者来着,与用户最近的距离就是通过app上的一个个界面,一个好的布局不仅能让开发者适配的工作量减少很多,也会给用户带来比较好的体验。
对于自动布局,最早的就属于Autoresizing Mask,在苹果没有推出AutoLayout之前,适配工作主要就靠Autoresizing Mask去完成,但随着要求的变高,只能约束具有等级关系的两个view,对于左右同等级的视图却达不到很好的控制。iOS6之后,苹果官方推出了AutoLayout,不仅包含了Autoresizing Mask的所有功能,而且对兄弟视图之间的约束有了更完美的控制。
但由于官方的布局写法太过繁琐,可谓又臭又长,可读性也比较不好。因此催生了一些在此基础上封装的第三方的自动布局库,如Masonry,以及本文要讲述的PureAutoLayout。
我们可以清晰的看到,PureAutoLayout不仅支持Objective-c,还支持所有版本的Swift.。这也是他的优势所在。
其他不多说了,简单看一下他的内部结构吧
正如名字一样,内部结构也是一样的“Pure”,作者分别对UIView,NSArray和NSLayoutConstraint进行了拓展。方法名以auto开头,方便Xcode的提示。
常用方法
一,子视图与父视图之间的约束
autoCenterInSuperview
autoCenterInSuperviewMargins
//处于superview的中心(Margin 是iOS8新增的一个属性,是View的一边与其子View对应的边的推荐最小距离,默认16.)
autoAlignAxisToSuperviewAxis:(ALAxis)axis
autoAlignAxisToSuperviewMarginAxis:(ALAxis)axis
//在superview的某一个轴的中心(ALAxisVertical相对父视图左右等距;ALAxisHorizontal上下等距)
autoPinEdgeToSuperviewEdge:(ALEdge)edge
autoPinEdgeToSuperviewMargin:(ALEdge)edge
//距离superview的 左/右/上/下/ 的距离 默认和superview等bounds。
autoPinEdgeToSuperviewMargin:(ALEdge)edge relation:(NSLayoutRelation)relation
//距离父视图某个边距的取值范围
其中:
typedef NS_ENUM(NSInteger, NS