Masonry 源码:https://github.com/Masonry/Masonry
Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X。
首先使用Masonry前本文默认读者对AutoLayout熟练使用或者有基本了解,下面看一下xib中对AutoLayout的使用:
使用:
下图是Masonry支持的一些属性:
以上属性与NSLayoutAttrubute的对照表如下:
其中leading与left trailing与right 在通常情况下是等价的,使用时可以用left和right就好,特殊情况这里不做介绍。
Masonry给我们提供了以下3个方法来实现在视图中约束的添加和改变:
- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;
- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block;
- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;
/*mas_makeConstraints 只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束否则会报错;mas_updateConstraints 针对上面的情况会更新在block中出现的约束不会导致出现两个相同约束的情况;mas_remakeConstraints 则会清除之前的所有约束仅保留最新的约束,三个函数合理利用就可以应对各种情况了*/
需要注意的是添加约束前必须要把view添加到视图上。使用updateConstraints更新的时候必须是makeConstraints里面设置过的约束。
例:让一个view距离父视图superView边距为10
另:mas_equalTo是一个MACRO,比较的是值,equalTo比较的是view。