運(yùn)用Masonry自適應(yīng)布局

從iPhone剛面世到如今的iPhone6s,屏幕大小、種類不斷發(fā)生著改變, iOS開發(fā)的布局方式從純代碼到Storyboard在升級(jí)著。個(gè)人覺得不要太過糾結(jié)使用哪種布局方式,純代碼有純代碼的好處、SB也有SB的麻煩,關(guān)鍵還是得根據(jù)項(xiàng)目、團(tuán)隊(duì)的需要選擇一種適合自己的方式。

Masonry是一個(gè)輕量級(jí)的布局框架 擁有自己的描述語法 采用更優(yōu)雅的鏈?zhǔn)秸Z法封裝自動(dòng)布局 簡(jiǎn)潔明了 并具有高可讀性 而且同時(shí)支持 iOS 和 Max OS X。

下面用個(gè)小Demo簡(jiǎn)單演示如何使用Masonry。

Masonry下載地址:https://github.com/SnapKit/Masonry

最終運(yùn)行效果


集成方式

下載Masonry并導(dǎo)入至項(xiàng)目中,在控制器里或PCH文件里引入Masonry.h


核心代碼


self.view.backgroundColor= [UIColorwhiteColor];

/**

*要求:保持100*100,居中

*/

UIView*grayView = [UIViewnew];

grayView.backgroundColor= [UIColorgrayColor];

[self.viewaddSubview:grayView];

[grayViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.size.mas_equalTo(CGSizeMake(100,100));

make.center.equalTo(self.view);

}];

/**

*要求:大小保持100*30,距離頂部20,距離右邊20

*/

UIView*redView = [UIViewnew];

redView.backgroundColor= [UIColorredColor];

[self.viewaddSubview:redView];

[redViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.size.mas_equalTo(CGSizeMake(100,30));

make.right.mas_equalTo(-20);

make.top.mas_equalTo(20);

}];

/**

*要求:黃色塊大小保持100*30,左邊距20,上邊距50,

藍(lán)色塊大小保持50*30,左邊距離黃色塊20,上邊距50

*/

UIView*yellowView = [UIViewnew];

yellowView.backgroundColor= [UIColoryellowColor];

[self.viewaddSubview:yellowView];

[yellowViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.size.mas_equalTo(CGSizeMake(100,30));

make.left.mas_equalTo(20);

make.top.mas_equalTo(50);

}];

UIView*blueView = [UIViewnew];

blueView.backgroundColor= [UIColorblueColor];

[self.viewaddSubview:blueView];

[blueViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.size.mas_equalTo(CGSizeMake(50,30));

make.top.mas_equalTo(50);

make.left.mas_equalTo(yellowView.mas_right).offset(20);

}];

/**

*要求:黑色塊高度保持30,與屏幕等寬,下邊距0

紫色塊高度40,寬度是屏幕一半,下邊距與黑色塊上編劇距離0.5

*/

UIView*blackView = [UIViewnew];

blackView.backgroundColor= [UIColorblackColor];

[self.viewaddSubview:blackView];

[blackViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.height.mas_equalTo(30);

make.width.equalTo(self.view);

make.bottom.mas_equalTo(0);

}];

UIView*purpleView = [UIViewnew];

purpleView.backgroundColor= [UIColorpurpleColor];

[self.viewaddSubview:purpleView];

[purpleViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.height.mas_equalTo(40);

make.width.mas_equalTo(self.view.frame.size.width/2);

make.bottom.mas_equalTo(blackView.mas_top).offset(-0.5);

}];

/**

*要求:灰、紅兩個(gè)色塊,左右間距為5,高度30,寬度平分

*/

UIView*grayView = [UIViewnew];

grayView.backgroundColor= [UIColorgrayColor];

[self.viewaddSubview:grayView];

UIView*redView = [UIViewnew];

redView.backgroundColor= [UIColorredColor];

[self.viewaddSubview:redView];

CGFloatmargin =5;

CGFloatheight =30;

[grayViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.left.mas_equalTo(margin);

make.bottom.mas_equalTo(-margin);

make.height.mas_equalTo(height);

make.right.equalTo(redView.mas_left).offset(-margin);

make.width.equalTo(redView);

}];

[redViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.right.mas_equalTo(-margin);

make.bottom.equalTo(grayView);

make.height.equalTo(grayView);

}];


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

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

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