iOS UITableView 解決估算行高和指定行高的矛盾

一般來說 在iOS 中若UITableViewCell 固定行高, 會(huì)通過

self.tableView.rowHeight = 44; 

這樣來設(shè)置.

  • 若不是固定行高, 可能出現(xiàn)多種高度, 可以通過tableView的代理方法實(shí)現(xiàn),在下面方法中實(shí)現(xiàn):
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ( ...條件1...) {
      return 20.f;
    }
    if ( ...條件2...) {
        return 40.f;
     }
  return 44.f;
}
  • 如果需要由系統(tǒng)自動(dòng)估算行高, 可以通過設(shè)置以下代碼實(shí)現(xiàn):
self.tableView.estimatedRowHeight = 55;
self.tableView.rowHeight = UITableViewAutomaticDimension;

問題: 一般來說, 當(dāng)用戶實(shí)現(xiàn)了heightForRow的代理方法, 系統(tǒng)會(huì)跟據(jù)代理方法的返回值設(shè)置行高, 如果沒有實(shí)現(xiàn)代理方法, 系統(tǒng)會(huì)根據(jù)self.tableView.rowHeight的值設(shè)置行高; 那么如果我們既想讓系統(tǒng)自動(dòng)估算行高, 又想指定滿足一定條件下的行高, 我們?cè)撛趺崔k呢? 我們可以通過下面的方法實(shí)現(xiàn):

  1. 設(shè)置估算行高:
self.tableView.estimatedRowHeight = 55;
self.tableView.rowHeight = UITableViewAutomaticDimension;
  1. 通過代理方法指定滿足一定條件的行高:(重點(diǎn): 代理方法的最后返回值一定要是UITableViewAutomaticDimension), 這樣系統(tǒng)才知道這一行需要估算,代碼如下:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ( ...條件1...) {
      return 20.f;
    }
    if ( ...條件2...) {
        return 40.f;
     }
  return UITableViewAutomaticDimension;
}

以上方法實(shí)際可用, 供參考.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容