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


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

送上源碼地址: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;

以下為代碼使用實現布局效果:

 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     }];

 

效果圖如下:

用了這個框架之后,再對比之前使用代碼布局的效果,感覺就是一個天一個地啊,而且在某些地方使用block感覺比使用delegate更加實用和簡捷方便,看來以后還是要多逛逛https://github.com/還是會得到很多收獲的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM