美文网首页
iOS相关:masonry的常用方法使用总结

iOS相关:masonry的常用方法使用总结

作者: 稻草人12138 | 来源:发表于2020-07-13 19:56 被阅读0次

    xib或者故事版布局的局限性越来越明显,所以以纯代码布局为主逐渐成为iOSer比较喜欢的一种写代码方式,那么用的最多的肯定是Masonry,下面总结自己在使用masongy中的几个常用方法:

    一、基本使用

    使用masonry必须要先把控件对象添加到父视图上,然后再对它进行布局,不然编译会报错.
    示例如下:

        UIView *view = [[UIView alloc]  initWithFrame:CGRectMake(50 , 50, 50, 50)];
        view.backgroundColor = [UIColor blueColor];
        [self.view addSubview:view];
    
        UIButton *btn = [UIButton buttonWithType:0];
        btn.frame = CGRectMake(100, 100, 100, 20);
        btn.backgroundColor = [UIColor redColor];
        [self.view addSubview:btn];
        
        [btn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(view);
            make.left.mas_equalTo(view.mas_right).mas_offset(20);
            make.right.mas_equalTo(self.view).mas_offset(-20);
            make.height.mas_offset(50);
            
        }];
    

    使用效果如图:


    效果图.png

    1.mas_makeConstraints

    mas_makeConstraints是最常用的方法,简单来说就是给视图添加约束,如上所示。

    2.mas_updateConstraints

    mas_updateConstraints是更新约束的方法,在原有的约束基础上更新同类约束,非同类约束不变。

    示例一:
        [btn mas_updateConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(view).mas_offset(20);
        }];
    
    更新约束示例,这里更新了top约束.png
    示例二:
        [btn mas_updateConstraints:^(MASConstraintMaker *make) {
            make.bottom.mas_equalTo(self.view).mas_offset(-100);
        }];
    
    这里更新了bottom约束,因为原约束包含了top和height约束,bottom就称为同类约束.png
    示例三:

    在原约束缺少某类约束时,我们看到更新约束能起到补全约束的作用:

        [btn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(view);
            make.left.mas_equalTo(view.mas_right).mas_offset(20);
            make.right.mas_equalTo(self.view).mas_offset(-20);
    //        make.height.mas_offset(50);
        }];
        [btn mas_updateConstraints:^(MASConstraintMaker *make) {
            make.bottom.mas_equalTo(self.view).mas_offset(-100);
        }];
    
    补全约束.png

    3.mas_remakeConstraints

    mas_remakeConstraints重置约束,把原有约束清空后再添加约束

        [btn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(view);
            make.left.mas_equalTo(view.mas_right).mas_offset(20);
            make.right.mas_equalTo(self.view).mas_offset(-20);
    //        make.height.mas_offset(50);
        }];
        
        [btn mas_remakeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(view).mas_offset(0);
        }];
    
    可以看到原有约束都清空了.png

    一句话总结:
    make用第一次添加的, update用最新的, remake不但用最新的,同时还会把原有的统统删除,不管是不是同类约束

    两个点

    1.Masonry是基于NSLayoutConstraint的封装,在block里面写约束,更为直观,更易于理解。
    2.masonry使用的最主要的编程思想:链式编程

    相关文章

      网友评论

          本文标题:iOS相关:masonry的常用方法使用总结

          本文链接:https://www.haomeiwen.com/subject/cnrzcktx.html