1.masonry这个布局是比较知名的,使用block的链式编程来布局确实酷炫,但是实际使用过程中确实遇到不少问题
2.于是在github上搜索到另外一个较出名的布局,便有了这段pureLayout的尝试
3.布局的问题通常出在给scrollView上的控件或者tableView上的控件设限制上,以及在iOS8正常运行,在iOS7上却频频崩溃,自动布局还是得自己多做尝试;
相对于masonry来说,我觉得pureLayout的可读性更强(个人观点)
....
许久没来更新了,接着写完这pureLayout的布局。
便捷的让一个子视图布局充满父视图:
然后设置其中不同控件相对布局的方法:
像这样居中,设置大小,sizetofit,边界等。
pureLayout的好处在于,这些设定限制的语句都是有返回值的,我们可以很方便的拿到我们想要改动的那个约束,然后在特定的事件下去修改约束。
看到有人问到tableviewHeaderView的问题。
分两种:第一种是代理方法返回的tableviewHeader:
这种是可以使用pureLayou布局并在header中的layoutsubViews去布局子空间的。
从代理方法中返回就可以了。
第二种是tableView的tableViewHeaderView,因为是直接给与赋值的,我的做法是自定义布局好的UIView之后,会在这个自定义的view的willMoveToSuperView中去设置frame。
//我们像这样使用pureLayout布局UI:
[tableView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsMake(0, 0, 0, 0) excludingEdge:ALEdgeBottom];
[tableView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:81];
//当想要改动其中的约束的时候,在布局的时候就拿到这条约束
self.tableViewBottomConstraint = [tableView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:81];
//然后在需要改动的地方改动这个限制就好了,然后加一个自带的动画效果就好了:
- (void)keyboardWillHide:(NSNotification*)aNotification {
self.tableViewBottomConstraint.constant = -81;
[UIView animateWithDuration:0.25
animations:^{
[self.tableView layoutIfNeeded];
}];
}