UITableView:改變 TableHeaderView 的高度


參考:http://stackoverflow.com/a/526825

有這么一種需求,在列表頂端顯示一些別樣的數據,而這個別樣的數據則需要通過一個別樣的 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];

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM