我需要非常簡單的事情 - 表格單元格自動檢測自己的高度。這裏有很多例子,基本上都是這樣說的:「在桌子上設置幾個標誌和值,並在你的單元格中使用自動佈局」。我的情況有點特別 - 我從單獨的XIB文件加載單元格的內容,這是一個普通的UIView。第一個問題是當我在界面構建器中創建XIB文件時 - 我不知道如何根據我指定的約束使它成爲「計算」的高度。我總是收到IB錯誤,除非我切換到「自由格式」並將視圖調整到與我的約束條件相匹配的高度。如果我不這樣做,我會得到以下錯誤:iOS版表格視圖單元格自動高度自定義的子視圖
在上述例子中我只需要其高度將是32(圖像高度)的圖+ 2 * 16(垂直距離約束來自父母的頂部和底部的圖像)加上邊距。調整在IB的自由視圖,直到錯誤消失似乎是一個骯髒的黑客對我來說,這其實並沒有自動佈局。作爲下一個步驟,我定義了一個電池類,在這裏我把這個廈門國際銀行看來,這樣的事情(抱歉objc代碼,幾乎完成了移植項目SWIFT):
- (void)awakeFromNib {
[super awakeFromNib];
[[NSBundle mainBundle] loadNibNamed:@"CellContent" owner:self options:nil];
// self.content is an outlet which gets the root of the XIB on load
[self.contentView addSubview:self.content];
self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
[self.contentView.leftAnchor constraintEqualToAnchor:self.content.leftAnchor].active = YES;
[self.contentView.rightAnchor constraintEqualToAnchor:self.content.rightAnchor].active = YES;
[self.contentView.topAnchor constraintEqualToAnchor:self.content.topAnchor].active = YES;
[self.contentView.bottomAnchor constraintEqualToAnchor:self.content.bottomAnchor].active = YES;
}
正如你可能已經猜到,當我運行這個時,單元格高度是一個很大的自由格式,就像在內容XIB的IB中一樣,所以沒有自動佈局。看起來自由曲面高度甚至被添加爲另一個約束,並且存在約束衝突,導致其中一些在運行時被破壞。
讓我知道如何解決這個問題,輕鬆地爲我的單元格創建內容視圖,這些單元格具有自動高度,並且可以嵌入我的單元格中以獲得tableView.rowHeight = UITableViewAutomaticDimension
魔法?