UITableViewCell 動態高度的調整


需求: 可變的表格高度。動態的加載的數據,同時支持reloadData.

第一個想法:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 調用

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

這樣的話就會造成cellForRowAtIndexPath用兩遍,性能先不說會不會出現什么BUG。


網上找資料: 來自高勇  http://gaoyong.diandian.com/post/2012-08-14/40036292960  

操作方法:

需要在因UITableView 的datasource變化后,導致某一個確定的cell需要被
reload (reloadRowsAtIndexPaths). reload 后需要在該cell中添加一些豎型排列子視圖 (addsubview)並且讓該subview在可視區域里面。

在 reload部分。cellForRowAtIndexPath部分。(reload的時候會自動調用cellForRowAtIndexPath)增加 了部分UIScrollView的scroll相關的代碼。(UITableView繼承自UIScrollView)。發現 cellForRowAtIndexPath被循環調用。

但是懷疑作者 在調用UITableViewCell *cell=[self tableView: tableView cellForRowAtIndexPath: indexPath];  時可能錯誤的寫成 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];造成了遞歸。

 

第二個方法:用自適應的label 讓cell的高度跟着適應。

 CGSize constraint = 預先設置的寬高;

  CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

然后在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 返回這個高度。當然局限性也很強就是必須是cell適應label的高度,要是有些圖片了之類的就廢了~~

第三種方法:我擦他了~ 還沒想出來~

 

 

 

 

 

 


免責聲明!

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



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