UITableView:改變 TableHeaderView 的高度

有這麼一種需求,在列表頂端顯示一些別樣的數據,而這個別樣的數據則須要經過一個別樣的 View 來展示,它即是 UITableView 的 tableHeaderView。web

假若 tableHeaderView 裏的內容很固定,高度不要隨着內容的不一樣而改變,這樣還好。動畫

若是,高度是須要動態改變的,某些人(好比我)可能就會遇到這樣一個難題:spa

已經給 view 中的每一個子 view 設置過值了,高度算過了,frame 也從新設置過了,可 tableHeaderView 的高度卻仍是以前的高度,沒有變化。內容變多,則會有一部分看不見了;內容變少,則有一部分空白,放在那裏實在很差看。code

怎麼辦??blog

view 做爲 tableView 的 tableHeaderView,單純的改變 view 的 frame 是無濟於事的,tableView  不會大度到時刻適應它的高度(之後 Apple 會不會改變就不知道了),因此,如何告訴tableView 它的 tableHeaderView 已經改變了?很簡單,就一句話(關鍵最後一句):table

//提早得到約束後的headBgView的bounds
[self.headBgView setNeedsLayout];
[self.headBgView layoutIfNeeded];

CGRect newFrame = headerView.frame; newFrame.size.height = newFrame.size.height + webView.frame.size.height; headerView.frame = newFrame; [self.tableView setTableHeaderView:headerView];

這樣之後,效果就出來了。不過這種過分顯得有些生硬,能不能加一點點動畫,讓它變得順眼一些呢?試試下面的代碼:class

[self.tableView beginUpdates];
[self.tableView setTableHeaderView:headerView];
[self.tableView endUpdates];
相關文章
相關標籤/搜索