雖說自己不愛用代碼寫view,但是上班的時候不讓你用storyboard啊,尼瑪全代碼,真是要了我的命。
不得已,用了大名鼎鼎的masonry來寫autolayout。
的確,相比ios自帶的autolayout的API來說,masonry的確簡單了很多,但是也很復雜啊,好不好!!!!
內心真的是極度的狂暴。
為UI控件添加約束時,主要會用到masonry里面的三個函數
masonry_makeConstraints (添加約束)
masonry_updateConstraints(更新約束)
masonry_remakeConstraints(刪除所有約束后,重新添加約束)
里面覺得最好用的是masonry_remakeConstraints,保證不會錯,不過要記得將約束寫在
- (void)updateConstraints
里面,然后調用
[self setNeedsUpdateConstraints];
[self updateConstraintsIfNeeded];
[self layoutIfNeeded];
這一串,否則不會更新。
有興趣的自己去谷歌百度原理,這里不解釋(其實我也說不清。。。。反正更新約束就要調用這幾個方法blah blah blah)
不過使用masonry_makeConstraints的時候不需要啦。如果界面搭好之后不會變動的話就用這個就行。
接下來
這幾個函數中就可以添加你UI控件的約束了。大概長這個樣子
[view1mas_makeConstraints:^(MASConstraintMaker *make) {? ?
?make.top.equalTo(superview.mas_top).with.offset(padding.top);
make.left.equalTo(superview.mas_left).with.offset(padding.left);? ??
make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom);? ??
make.right.equalTo(superview.mas_right).with.offset(-padding.right);
}];
//masonry的github上的例子
還是挺不淺顯易懂的。
自己下下來多用幾次就能意會了,說多了看著也累,還是動手比較好。
有興趣的朋友點擊這里下載去?masonry的github地址
尼瑪,算是第一篇跟開發相關的筆記了,雖然真的很水0.0