使用第三方框架 Masonry 實現自動佈局

使用第三方框架 Masonry 實現自動佈局

時間: 2015-02-10 11:08:41      閱讀:4595      評論:0      收藏:0      [點我收藏+]

標籤:git

因爲前兩天都在學習自動佈局的使用,可是又以爲蘋果原生的方式太過於麻煩,並且也不易於理解,昨天聽人說了有個第三方框架也能夠實現自動佈局的功能,而後在https://github.com/上找到了Mansonry這個框架,使用起來真的減小了不少時間,並且代碼直觀,更加容易理解。github

送上源碼地址:https://github.com/Masonry/Masonry框架

技術分享

以上說明了與參照控件的關係中三種條件的對應替代方法。佈局

 

技術分享

以上說明了上下左右等屬性的對應替代屬性。學習

 

一些設置約束的方法,更多內容請參考網站說明。網站

1 //設置約束
2 - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block;
3 
4 //若是以前已經有約束,則更新新的約束,若是沒有約束,則添加約束
5 - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block;
6 
7 //將以前的約束所有刪除,添加新的約束
8 - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;

如下爲代碼使用實現佈局效果:spa

 1     //添加兩個控件
 2     UIView *blueView = [[UIView alloc] init];
 3     blueView.backgroundColor = [UIColor blueColor];
 4     blueView.translatesAutoresizingMaskIntoConstraints = NO;
 5     [self.view addSubview:blueView];
 6     
 7     UIView *redView = [[UIView alloc] init];
 8     redView.backgroundColor = [UIColor redColor];
 9     redView.translatesAutoresizingMaskIntoConstraints = NO;
10     [self.view addSubview:redView];
11 
12     //給藍色View設置約束
13     [blueView mas_makeConstraints:^(MASConstraintMaker *make) {
14         make.left.equalTo(self.view.mas_left).offset(30);//和父view的左邊間距爲30;
15         make.bottom.equalTo(self.view.mas_bottom).offset(-30);//和父view的底部間距爲30;
16         make.right.equalTo(redView.mas_left).offset(-30);//和紅色view的間距爲30;
17         make.height.mas_equalTo(50);//藍色view的高度爲50
18     }];
19     
20     //給紅色View設置約束
21     [redView mas_makeConstraints:^(MASConstraintMaker *make) {
22         make.right.equalTo(self.view.mas_right).offset(-30);//和父view的右邊間距爲30;
23         make.bottom.equalTo(blueView.mas_bottom);//和藍色view的底部對齊
24         make.height.equalTo(blueView.mas_height);//和藍色view的高度相等
25         make.width.equalTo(blueView.mas_width);//和藍色view的寬度相等
26     }];

 

效果圖以下:3d

技術分享

用了這個框架以後,再對比以前使用代碼佈局的效果,感受就是一個天一個地啊,並且在某些地方使用block感受比使用delegate更加實用和簡捷方便,看來之後仍是要多逛逛https://github.com/仍是會獲得不少收穫的。code

相關文章
相關標籤/搜索