IOS開發-Masonry

來源:互聯網
上載者:User

標籤:

Masonry是一個封裝蘋果Autolayout的一個第三方架構。簡化了代碼添加約束的代碼量等。

https://github.com/SnapKit/Masonry
下載完後解壓縮,把Masonry這個檔案夾拖進項目裡就可以了。

下面是一個小小的執行個體:
先匯入標頭檔:

#import "Masonry/Masonry.h"
    UIView *buleView = [[UIView alloc]init];    [buleView setBackgroundColor:[UIColor blueColor]];    [self.view addSubview:buleView];    [buleView mas_makeConstraints:^(MASConstraintMaker *make) {        //大小        make.size.mas_equalTo(CGSizeMake(50, 50));        //位置:置中        make.center.mas_equalTo(self.view);    }];

運行一下,在螢幕中央就有一個50*50的藍色小方塊了。

Masonry裡面幾個約束的方法:

    [buleView mas_makeConstraints:^(MASConstraintMaker *make) {        //添加新約束    }];    [buleView mas_remakeConstraints:^(MASConstraintMaker *make) {        //會把以前的約束刪除掉,添加新的約束    }];    [buleView mas_updateConstraints:^(MASConstraintMaker *make) {        //更新以前的約束    }];

引用Masonry文檔的一個例子:
效果是一個view距離父控制項上下左右都有10的邊距。官方列舉了兩種寫法,第二種直接一句話就能實現效果。
第一種:

UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);[view1 mas_makeConstraints:^(MASConstraintMaker *make) {    make.top.equalTo(superview.mas_top).with.offset(padding.top); //with is an optional semantic filler    make.left.equalTo(superview.mas_left).with.offset(padding.left);    make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom);    make.right.equalTo(superview.mas_right).with.offset(-padding.right);}];

第二種:

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {    make.edges.equalTo(superview).with.insets(padding);}];

到這裡我們會碰到很多mas_首碼和沒有這個首碼的東西,他們兩個的區別就是帶mas_首碼的是有對參數進行封裝的,例如:
mas_equalTo(100)
equalTo(@100)
沒有mas_首碼的就需要轉類型,反之則不用。
如果要使這兩個的效果等同,那麼Masonry提供了兩個宏給我們使用,但是需要注意的是,定義這個宏的時候,要在匯入Masonry標頭檔之前,例如:

//define this constant if you want to enable auto-boxing for default syntax#define MAS_SHORTHAND_GLOBALS//define this constant if you want to use Masonry without the ‘mas_‘ prefix#define MAS_SHORTHAND#import "Masonry/Masonry.h"

這樣就可以了。

IOS開發-Masonry

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.