看一下Masonry支持哪一些属性
@property(nonatomic,strong,readonly) MASConstraint *left;
@property(nonatomic,strong,readonly) MASConstraint *top;
@property(nonatomic,strong,readonly) MASConstraint *right;
@property(nonatomic,strong,readonly) MASConstraint *bottom;
@property(nonatomic,strong,readonly) MASConstraint *leading;
@property(nonatomic,strong,readonly) MASConstraint *trailing;
@property(nonatomic,strong,readonly) MASConstraint *width;
@property(nonatomic,strong,readonly) MASConstraint *height;
@property(nonatomic,strong,readonly) MASConstraint *centerX;
@property(nonatomic,strong,readonly) MASConstraint *centerY;
@property(nonatomic,strong,readonly) MASConstraint *baseline;
这些属性与NSLayoutAttrubute的对照表如下:
首先在Masonry中能够添加autolayout约束有三个函数
- (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则会清除之前的所有约束仅保留最新的约束。
三种函数善加利用就可以应对各种情况了
非常好的一篇Masonry的文章