虽说自己不爱用代码写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
网友评论
https://github.com/zhenglibao/FlexLib