iOS-UI控制項之UITableView(三)- 自訂不等高的cell

來源:互聯網
上載者:User

標籤:

Storyboard_不等高對比自訂等高cell,需要幾個額外的步驟(iOS8開始才支援)
  • 添加子控制項和contentView之間的間距約束

  • 設定tableViewCell的真實行高和估算行高

// 告訴tableView所有cell的真實高度是自動計算(根據設定的約束來計算)self.tableView.rowHeight = UITableViewAutomaticDimension;// 告訴tableView所有cell的估算高度self.tableView.estimatedRowHeight = 44;
  • 改變cell高度,只需要改變約束的值。
如果要支援iOS8之前
  • 如果cell內部有自動換行的label,需要設定preferredMaxLayoutWidth屬性
- (void)awakeFromNib{    // 手動設定文字的最大寬度(目的是:讓label知道自己文字的最大寬度,進而能夠計算出自己的frame)    self.text_label.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;}
  • 設定tableView的cell估算高度
// 告訴tableView所有cell的估算高度(設定了估算高度,就可以減少tableView:heightForRowAtIndexPath:方法的調用次數)self.tableView.estimatedRowHeight = 200;
  • 在代理方法中計算cell的高度
XMGStatusCell *cell;- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    // 建立一個cell(cell的作用:根據模型資料布局所有的子控制項,進而計算出cell的高度)    if (!cell) {        cell = [tableView dequeueReusableCellWithIdentifier:ID];    }    // 設定模型資料    cell.status = self.statuses[indexPath.row];    return cell.height;}- (CGFloat)height{    // 強制布局cell內部的所有子控制項(label根據文字多少計算出自己最真實的尺寸)    [self layoutIfNeeded];    // 計算cell的高度    if (self.status.picture) {        return CGRectGetMaxY(self.pictureImageView.frame) + 10;    } else {        return CGRectGetMaxY(self.text_label.frame) + 10;    }}

iOS-UI控制項之UITableView(三)- 自訂不等高的cell

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.