Masory簡單使用

現(xiàn)在可視化編程成為一種熱流,大大的減少了我們程序開發(fā)的時(shí)間,提高了我開發(fā)的效率。但是作為一個(gè)程序員,我們不但要會(huì)新的知識,還要去學(xué)習(xí)舊的東西。如果我們?nèi)チ斯窘邮值氖抢铣绦騿T寫的,他沒有用可視化,而是用了純了代碼約束,那么我們該如何去做?所以在這里我向大家簡單的演示一下 Masonry 的使用,因?yàn)?Masonry 是大部分公司經(jīng)常用到的一個(gè)純代碼約束第三方,它是對 NSLayoutConstraint 進(jìn)行了分裝,就好比 FMDB 是對 Sqlite 的封裝,方便了程序員的使用

首先我們需要使用 cocoapodspod search masonry

pod 'Masonry', '~> 0.6.3'

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

1、簡單視圖創(chuàng)建

    UIView *view1 = [[UIView alloc]init];
    view1.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:view1];
    [view1 mas_makeConstraints:^(MASConstraintMaker *make) {

        // 設(shè)置view1的大小
        make.size.mas_equalTo(CGSizeMake(100, 100));
        //設(shè)置view1的中心點(diǎn)
        make.center.equalTo(self.view);
    }];

效果圖1

這里我們需要注意一個(gè)地方,在創(chuàng)建視圖的時(shí)候我們并不需要給它 frame ,直接 init 即可,直接將其添加到視圖上,然后在對其進(jìn)行約束設(shè)置。再次強(qiáng)調(diào)?。?!先添加視圖,再對其進(jìn)行約束。約束用到 mas_makeConstraints 這個(gè)方法

2、邊距設(shè)置

collectionViewItem 中,我們經(jīng)常會(huì)設(shè)置 itemEdgeInsets,那么 Masonry 也給我們提供了去設(shè)置邊距的方法,我們一起來看一下

 UIView *view2 = [[UIView alloc]init];
    view2.backgroundColor = [UIColor redColor];
    [view1 addSubview:view2];
    [view2 mas_makeConstraints:^(MASConstraintMaker *make) {

        // 設(shè)置view2距離view1的邊距
        make.edges.mas_equalTo(UIEdgeInsetsMake(10, 10, 10, 10));
    }];
效果圖2

3、綜合

說了這么多,有人會(huì)說我寫的都不在重點(diǎn)上,我們經(jīng)常用到的約束都是距離某個(gè)view的上下左右多少,那么我們來綜合演示一下

  UIView *view3 = [[UIView alloc]init];
    view3.backgroundColor = [UIColor redColor];
    [self.view addSubview:view3];
    [view3 mas_makeConstraints:^(MASConstraintMaker *make) {

        // 設(shè)置view3的大小
        make.size.mas_equalTo(CGSizeMake(300, 200));
        // 設(shè)置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的中心點(diǎn)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的中心點(diǎn)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);
    }];

在這里為什么距離還有負(fù)的呢?這塊一個(gè)點(diǎn):我們iOS坐標(biāo)系中上左為正,下右為負(fù)

效果圖3
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,074評論 4 61
  • 目錄 0、前言 一、Auto Layout前世今生 二、Auto Layout基礎(chǔ)知識 1.Auto Layout...
    浮游lb閱讀 25,407評論 3 90
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,789評論 25 709
  • I 想要做好一件事,卻因?yàn)楦鞣N因素干擾無法順利完成。解決方法:通過對自己實(shí)際生活的規(guī)律進(jìn)行統(tǒng)計(jì)分析,找出哪個(gè)時(shí)間段...
    Zz_14f3閱讀 195評論 0 0
  • 今天發(fā)了一個(gè)閃送,把鑰匙送給張先生,本來是讓我去送一趟,但是下午和兒子有約,然后兒子要求張先生自己回來取,結(jié)果關(guān)鍵...
    雪茄123閱讀 235評論 0 0

友情鏈接更多精彩內(nèi)容