Masonry使用注意事項

一 常用方法介紹

?masonry 自動幫我們把 autoresizing給禁用掉

這兩個宏定義要放到導入頭文件之前

//define this constant if you want to use Masonry without the 'mas_' prefix

#define MAS_SHORTHAND

//define this constant if you want to enable auto-boxing for default syntax

#define MAS_SHORTHAND_GLOBALS

// 導入頭文件

#import "Masonry.h"

創(chuàng)建約束 ? ? ?makeConstraints:

更新約束 (只會對指定的約束進行更新) ? ? ? ??updateConstraints:

重設約束 (是會把之前的約束都清空掉, 然后應用新的約束) ? ? ? ??remakeConstraints:

優(yōu)先級的設置 ? ? ? ? ? ?make.height.equalTo(40).priority(10);

二 使用示例

#define kSmallMargin5

?// remakeConstraints ? 如果在之前設置過有沖突,就用這個方法重置


第一種方式

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

// make就相當于redView,要做約束的時候,都需要針對make來做

//頂部的約束

make.top.mas_equalTo(self.view.mas_top).offset(20);

//右側的約束

make.right.mas_equalTo(self.view.mas_right).offset(-20);

//左側的約束

make.left.mas_equalTo(self.view.mas_left).offset(20);

//高度的約束

make.height.mas_equalTo(40);

}];


第二種方式

如果被約束view的屬性和參照view的屬性一致的話,就可以把參照view的屬性給省略掉

equalTo() :不能自動轉換類型(自動裝箱)

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(self.view).offset(20);

make.left.equalTo(self.view).offset(20);

make.right.equalTo(self.view).offset(-20);

// equalTo不會自動的把基本數(shù)據(jù)類型,轉為id

make.height.equalTo(@40);

}];


第三種方式

如果被約束的view和參照view是父子關系,可以把參照view給省略掉(屬性也要一致)

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.offset(20);

make.left.offset(20);

make.right.offset(-20);

make.height.equalTo(@40);

}];


第四種方式

如果不同屬性設置的約束是相同的,就可以通過.語法進行鏈接

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

//make.top.left.offset(20);

make.top.and.left.offset(20);

make.right.offset(-20);

make.height.equalTo(@40);

}];


第五種寫法

可以針對內(nèi)邊距進行設置

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

NSValue *edges = [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(20, 20, 20, 20)];

make.edges.equalTo(edges);

}];


第六種寫法

一旦定義完之后,就可以實現(xiàn)類型的自動轉換

#define MAS_SHORTHAND_GLOBALS

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(UIEdgeInsetsMake(20, 20, 20, 20));

}];

#define MAS_SHORTHAND可以省略掉mas_前綴

[redView makeConstraints:^(MASConstraintMaker *make) {

make.top.left.offset(20);

make.right.offset(-20);

make.height.equalTo(40);

}];

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • iOS_autoLayout_Masonry 概述 Masonry是一個輕量級的布局框架與更好的包裝AutoLay...
    指尖的跳動閱讀 1,185評論 1 4
  • (一)Masonry介紹 Masonry是一個輕量級的布局框架 擁有自己的描述語法 采用更優(yōu)雅的鏈式語法封裝自動布...
    木易林1閱讀 2,371評論 0 3
  • Masonry是一個輕量級的布局框架,擁有自己的描述語法,采用更優(yōu)雅的鏈式語法封裝自動布局,簡潔明了并具有高可讀性...
    3dcc6cf93bb5閱讀 1,798評論 0 1
  • 1 我出生那年,我大姐季雨大學畢業(yè)。 大姐找了很不錯的工作,高薪體面,成了全村人教育小朋友的模范...
    Yi冬無雪閱讀 336評論 0 2
  • 外國人的腦洞經(jīng)常開的很大,創(chuàng)意無限。這是一個外國媽媽為他女兒設計的”服裝”,用到了西瓜,草莓,蔬菜,花朵等等元素,...
    Lonelyboy1閱讀 582評論 0 0