1.masonry這個布局是比較知名的,使用block的鏈?zhǔn)骄幊虂聿季执_實酷炫,但是實際使用過程中確實遇到不少問題
2.于是在github上搜索到另外一個較出名的布局,便有了這段pureLayout的嘗試
3.布局的問題通常出在給scrollView上的控件或者tableView上的控件設(shè)限制上,以及在iOS8正常運行,在iOS7上卻頻頻崩潰,自動布局還是得自己多做嘗試;
相對于masonry來說,我覺得pureLayout的可讀性更強(個人觀點)
....
許久沒來更新了,接著寫完這pureLayout的布局启妹。
便捷的讓一個子視圖布局充滿父視圖:
然后設(shè)置其中不同控件相對布局的方法:
像這樣居中荷逞,設(shè)置大小,sizetofit紫皇,邊界等空另。
pureLayout的好處在于盆耽,這些設(shè)定限制的語句都是有返回值的,我們可以很方便的拿到我們想要改動的那個約束扼菠,然后在特定的事件下去修改約束摄杂。
看到有人問到tableviewHeaderView的問題。
分兩種:第一種是代理方法返回的tableviewHeader:
這種是可以使用pureLayou布局并在header中的layoutsubViews去布局子空間的循榆。
從代理方法中返回就可以了匙姜。
第二種是tableView的tableViewHeaderView,因為是直接給與賦值的冯痢,我的做法是自定義布局好的UIView之后,會在這個自定義的view的willMoveToSuperView中去設(shè)置frame。
//我們像這樣使用pureLayout布局UI:
[tableView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsMake(0, 0, 0, 0) excludingEdge:ALEdgeBottom];
[tableView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:81];
//當(dāng)想要改動其中的約束的時候,在布局的時候就拿到這條約束
self.tableViewBottomConstraint = [tableView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:81];
//然后在需要改動的地方改動這個限制就好了,然后加一個自帶的動畫效果就好了:
- (void)keyboardWillHide:(NSNotification*)aNotification {
self.tableViewBottomConstraint.constant = -81;
[UIView animateWithDuration:0.25
animations:^{
[self.tableView layoutIfNeeded];
}];
}