幾種設置UITableView的cell動態高度的方法

1.UITableView加載的順序是先獲得表的行的高度,也就是先調用heightForRowAtIndexPath方法,而後再調用cellForRowAtIndexPath,因此咱們有兩個辦法實現自定義cell高度(解決不一樣section的不一樣行高問題)。spa

一:改變它的加載順序,或者說白了就是計算好cell高度後,再次讓它加載heightForRowAtIndexPath方法;it

二:直接在heightForRowAtIndexPath計算,作判斷,直接返回對應的高度。io

 

如下是第一種方法的實例:table

UITableView設置單元格的高度的方法file

  1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  2.         return 64;
  3. }

下面介紹如何擴大當前單元格而且縮小其餘單元格:select

  1. // Somewhere in your header:
  2. NSIndexPath *selectedCellIndexPath;
  3. // And in the implementation file:
  4. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  5.         selectedCellIndexPath = indexPath;
  6.         // Forces the table view to call heightForRowAtIndexPath
  7.     [tableView reloadRowsAtIndexPaths:[NSArrayarrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
  8. }
  9. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  10.         // Note: Some operations like calling [tableView cellForRowAtIndexPath:indexPath]
  11.         // will call heightForRow and thus create a stack overflow
  12.         if(selectedCellIndexPath != nil && [selectedCellIndexPath compare:indexPath] == NSOrderedSame){
  13.                 return 128;
  14.         }else{
  15.              return 64;
  16.        }
  17. }

reloadRowsAtIndexPaths方法將從新調用heightForRowAtIndexPath使單元格改變高度。 方法

reloadRowsAtIndexPaths是在3.0.存儲NSIndexPath的緣由是由於不可能在堆棧不溢出的狀況下在 heightForRowAtIndexPath調用類方法例如cellForRowAtIndexPath 。im

相關文章
相關標籤/搜索