iOS 的 AutoLayout:Masonry

iOS在設計UI的時候,以前很少使用autolayout,因爲以前就那麼幾款ios設備,不用做太多適配。

最近蘋果出了這麼多亂七八糟的設備,iPhone6呀6plus呀各種,使得ios開發者要注重各種屏幕適配。於是autolayout就十分必要

一般對於一個view,我們使用masonry的方法很簡單

UIView* v = [[UIView alloc]init];
/* do something on your view */
[superView addSubview: v];
[v mas_makeConstraints:^(MASConstraintMaker *make)
{
make.left .equalTo(someView.mas_left ).with.offset(10);
make.right.equalTo(someView.mas_right ).with.offset(10);
make.top.equalTo(someView.mas_top).with.offset(10);
make.bottom.equalTo(someView.mas_bottom).with.offset(10);
}
]

還有幾個有用的,例如
make.width.equalTo(something.mas_width).dividedBy(4);
可以使用在一排按鈕等距離排布的情形。
and so on

這裏需要一些邏輯上的結構相關性,哪個view在哪個view的左邊呀,哪個view的上邊對齊哪裏呀,之類之類的。masonry用法很多,具體就要自己查看API了,懶得打字。。。
注意一點,對於view,一定要先addSubview之後再用masonry,否則會因爲指針問題(找不到superview)而報錯

另外也要注意一個地方,經過masonry是不會改變一個view的frame屬性,
故若某個函數需要傳入frame參數,來做下一步的適配(例如寫一個靜態方法然後用holderview做縮放)的時候,就不要用masonry,而繼續用傳統的方法,計算frame的參數,在initwithframe
但若某個佈局不需要使用frame的屬性(例如一排button),就可以果斷使用masonry。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章