Masonry纯代码约束

作者: 大展 | 来源:发表于2016-02-04 01:02 被阅读1464次

    现在可视化编程成为一种热流,大大的减少了我们程序开发的时间,提高了我开发的效率。但是作为一个程序员,我们不但要会新的知识,还要去学习旧的东西。如果我们去了公司接手的是老程序员写的,他没有用可视化,而是用了纯了代码约束,那么我们该如何去做?所以在这里我向大家简单的演示一下 Masonry 的使用,因为 Masonry 是大部分公司经常用到的一个纯代码约束第三方,它是对 NSLayoutConstraint 进行了分装,就好比 FMDB 是对 Sqlite 的封装,方便了程序员的使用

    首先我们需要使用 cocoapodspod search masonry

    pod 'Masonry', '~> 0.6.3'

    #######import <Masonry/Masonry.h>

    1、简单视图创建

        UIView *view1 = [[UIView alloc]init];
        view1.backgroundColor = [UIColor yellowColor];
        [self.view addSubview:view1];
        [view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    
            // 设置view1的大小
            make.size.mas_equalTo(CGSizeMake(100, 100));
            //设置view1的中心点
            make.center.equalTo(self.view);
        }];
    
    
    屏幕快照 2016-02-04 00.07.39.png

    这里我们需要注意一个地方,在创建视图的时候我们并不需要给它 frame ,直接 init 即可,直接将其添加到视图上,然后在对其进行约束设置。再次强调!!!先添加视图,再对其进行约束。约束用到 mas_makeConstraints 这个方法

    2、边距设置

    collectionViewItem 中,我们经常会设置 itemEdgeInsets,那么 Masonry 也给我们提供了去设置边距的方法,我们一起来看一下

     UIView *view2 = [[UIView alloc]init];
        view2.backgroundColor = [UIColor redColor];
        [view1 addSubview:view2];
        [view2 mas_makeConstraints:^(MASConstraintMaker *make) {
    
            // 设置view2距离view1的边距
            make.edges.mas_equalTo(UIEdgeInsetsMake(10, 10, 10, 10));
        }];
    
    屏幕快照 2016-02-04 00.08.40.png

    3、综合

    说了这么多,有人会说我写的都不在重点上,我们经常用到的约束都是距离某个view的上下左右多少,那么我们来综合演示一下

      UIView *view3 = [[UIView alloc]init];
        view3.backgroundColor = [UIColor redColor];
        [self.view addSubview:view3];
        [view3 mas_makeConstraints:^(MASConstraintMaker *make) {
    
            // 设置view3的大小
            make.size.mas_equalTo(CGSizeMake(300, 200));
            // 设置view3的中心
            make.center.equalTo(self.view);
        }];
    
        UIView *view4 = [[UIView alloc]init];
        view4.backgroundColor = [UIColor blueColor];
        [view3 addSubview:view4];
        [view4 mas_makeConstraints:^(MASConstraintMaker *make) {
    
            // view4和view3在一条水平线上
            make.centerY.equalTo(view3.mas_centerY);
            // view4的左边距离view3的左边10
            make.left.equalTo(view3.mas_left).with.offset(10);
            // view4的右边距离view3的中心点10
            make.right.equalTo(view3.mas_centerX).with.offset(-10);
            // view4的顶部距离view3的顶部10
            make.top.equalTo(view3.mas_top).with.offset(10);
            // view4的底部距离view3的底部10
            make.bottom.mas_equalTo(view3.mas_bottom).with.offset(-10);
    
        }];
    
        UIView *view5 = [[UIView alloc]init];
        view5.backgroundColor = [UIColor yellowColor];
        [view3 addSubview:view5];
        [view5 mas_makeConstraints:^(MASConstraintMaker *make) {
    
            // view5和view3在一条水平线上
            make.centerY.equalTo(view3.mas_centerY);
            // view5的右边边距离view3的右边10
            make.right.equalTo(view3.mas_right).with.offset(-10);
            // view5的左边距离view3的中心点10
            make.left.equalTo(view3.mas_centerX).with.offset(10);
            // view5的顶部距离view3的顶部10
            make.top.equalTo(view3.mas_top).with.offset(10);
            // view5的底部距离view3的底部10
            make.bottom.mas_equalTo(view3.mas_bottom).with.offset(-10);
        }];
    
    

    在这里为什么距离还有负的呢?这块一个点:我们iOS坐标系中上左为正,下右为负

    屏幕快照 2016-02-04 00.55.04.png

    快过年了,提前祝大家新年快乐!工作顺利!

    如有雷同,你就是抄我的!😊😊😊 --大展

    相关文章

      网友评论

      本文标题:Masonry纯代码约束

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