使用AutoLayOut根據(jù)文本顯示不等高的cell

這篇文章主要用于兼容iOS7系統(tǒng),在iOS8以上直接一句代碼系統(tǒng)就可以幫你算出cell的高度,有興趣的朋友可以自己搜下。以下列出這個(gè)例子的代碼流程

  • 常規(guī)的創(chuàng)建一個(gè)控制器帶一個(gè)tableview視圖,在控制器.m文件中傳遞模型數(shù)據(jù),這里注意下:在模型中加入一個(gè)存儲(chǔ)cell高度的屬性用于緩存cell高度,增強(qiáng)視圖滑動(dòng)的流暢性。

  • 通過xib自定義一個(gè)cell,在這個(gè)例子中的cell上加一個(gè)UILabel,并設(shè)置上下左右的約束。


    cell的內(nèi)部約束
  • 在cell中有一個(gè)很重要的操作,UILable多行時(shí)必須設(shè)置preferredMaxLayoutWidth屬性,不然系統(tǒng)無法確定UILabel的寬度

self.aLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width-16;
  • 實(shí)現(xiàn)tableview代理方法1,這個(gè)方法可以避免一初始化控制器系統(tǒng)就計(jì)算全部cell的高度,消耗資源,使用這個(gè)方法好處就是系統(tǒng)只會(huì)先算顯示在屏幕的cell高度.
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 44;
}
  • 實(shí)現(xiàn)代理方法2,這個(gè)是重頭戲,主要用到systemLayoutSizeFittingSize:這個(gè)方法就可以得到cell的高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (_prototyCell == nil) {
        
        _prototyCell = [tableView dequeueReusableCellWithIdentifier:@"Custom"];
    }
    
    DataEntity *dataEntity = self.dataSource[indexPath.row];
    
    if (dataEntity.cellH<=0) {
        
        _prototyCell.aLabel.text = dataEntity.title;
        dataEntity.cellH = [_prototyCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height+0.5;
    }
    return dataEntity.cellH;

}

寫這篇文章是為了記錄自己學(xué)習(xí)這個(gè)的過程,學(xué)習(xí)這個(gè)主要是在這里看到lishichao706的專欄,這個(gè)作者寫得很詳細(xì),有興趣可以去看看

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 我們?cè)谏弦黄锻ㄟ^代碼自定義不等高cell》中學(xué)習(xí)了tableView的相關(guān)知識(shí),本文將在上文的基礎(chǔ)上,利用sto...
    啊世ka閱讀 1,647評(píng)論 2 7
  • 九十風(fēng)云轉(zhuǎn)瞬間,軍魂鑄就永難刪。 雪山草地任危苦,萬水千山多險(xiǎn)艱。 終竟?jié)M腔騰熱血,曾經(jīng)一路克雄關(guān)。 人民子弟兵威...
    雪窗_武立之閱讀 623評(píng)論 0 6
  • 我不能 把愛的全部 分一份給你 想要 你就全部拿去 我愛的池塘清澈見底 沒有獵奇者期待的秘密 偶爾 你也能看見幾條...
    Julien陸主歡閱讀 390評(píng)論 7 6
  • 一笑萬古春,一啼萬古愁。此情非你莫屬,此貌非你莫有。 李碧華在《霸王別姬》開篇便說:每一個(gè)人,有其依附之物。娃娃...
    秋山紗蘭閱讀 1,585評(píng)論 1 6
  • 文/韋劍 揮手告別的車站 淚眼朦朧的人 轉(zhuǎn)頭掩不住的憂傷 從此化作了思念 回首間 相送人已遠(yuǎn)去 最后的一幕 才發(fā)現(xiàn)...
    韋劍閱讀 342評(píng)論 0 1

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