Masonry使用

一、使用Maaonry注意事项

1.在使用Masonry添加约束之前,需要在addSubview之后才能使用,否则会导致崩溃。

2.在添加约束时初学者经常会出现一些错误,约束出现问题的原因一般就是两种:约束冲突和缺少约束。对于这两种问题,可以通过调试和log排查。

3.之前使用Interface Builder添加约束,如果约束有错误直接就可以看出来,并且会以红色或者黄色警告体现出来。而Masonry则不会直观的体现出来,而是以运行过程中崩溃或者打印异常log体现,所以这也是手写代码进行AutoLayout的一个缺点。

二、基础使用

Masonry基础API

 mas_makeConstraints()  添加约束

 mas_remakeConstraints()  移除之前的约束,重新添加新的约束

 mas_updateConstraints()   更新约束

equalTo()

mas_equalTo()

width()    用来表示宽度,例如代表view的宽度。代表坐标系对象

mas_width()    用来获取宽度的值。获取坐标系对象的值。

三、常用方法

1.设置内边距

通过insets简化设置内边距的方式

    [ self.view2 mas_makeConstraints:^(MASConstraintMaker *make {make.edges.equalTo(self.view1).insets(UIEdgeInsetsMake(5, 10, 15, 20));}];

2.更新约束

    [self.view2 mas_makeConstraints:^(MASConstraintMaker *make){

        make.center.equalTo(self.view1).offset(0);

        make.size.mas_equalTo(CGSizeMake(80, 80)); }];

3.大于等于或小于等于某个值的约束

            //设置宽度大于等于300

            make.width.greaterThanOrEqualTo(@300);

            //设施宽度小于等于300

            make.width.lessThanOrEqualTo(@300);

4.设置约束优先级

    Masonry为我们提供了三个默认的方法,priorityLow()、priorityMedium()、priorityHigh(),   这三个方法内部对应着不同的默认优先级。

  除了这三个方法,我们也可以自己设置优先级的值,可以通过priority()方法来设置。

     [self.view2 mas_makeConstraints:^(MASConstraintMaker *maker)      {

          maker.center.equalTo(self.view1);

          maker.width.equalTo(self.view1).priorityLow();

          maker.width.equalTo(@20).priorityHigh();

          ma height ker..equalTo(self.view1).priority(200);

          maker.height.equalTo(@40).priority(1000);

}];

5.约束比例

//设置当前约束值乘以多少,例如view2的宽度是view1的两倍

make.width.equalTo(self.view1).multipliedBy(2);

你可能感兴趣的:(Masonry使用)