UITableView:改變 TableHeaderView 的高度

有這么一種需求,在列表頂端顯示一些別樣的數據,而這個別樣的數據則需要通過一個別樣的 View 來展現,它便是 UITableView 的 tableHeaderView。

倘若 tableHeaderView 里的內容很固定,高度不要隨著內容的不同而改變,這樣還好。

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

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

怎么辦??

view 作為 tableView 的 tableHeaderView,單純的改變 view 的 frame 是無濟于事的,tableView??不會大度到時刻適應它的高度(以后 Apple 會不會改變就不知道了),所以,如何告訴tableView 它的 tableHeaderView 已經改變了?很簡單,就一句話(關鍵最后一句):

[webView sizeToFit];

CGRect newFrame = headerView.frame;

newFrame.size.height = newFrame.size.height + webView.frame.size.height;

headerView.frame = newFrame;

[self.tableView setTableHeaderView:headerView];

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

[self.tableView beginUpdates];

[self.tableView setTableHeaderView:headerView];

[self.tableView endUpdates];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容