我有一個UITableViewCell
設計與.xib
使用細胞自動調整。在iOS 9中運行良好,但在iOS 8中,單元不會自行擴展,並且內部的標籤仍保留1行文本。如果單元離開屏幕並返回(即滾動後),則所有標籤均可用。iOS UITableViewCell autosizing bug
想法?我認爲這是一個iOS 8的錯誤。
我有一個UITableViewCell
設計與.xib
使用細胞自動調整。在iOS 9中運行良好,但在iOS 8中,單元不會自行擴展,並且內部的標籤仍保留1行文本。如果單元離開屏幕並返回(即滾動後),則所有標籤均可用。iOS UITableViewCell autosizing bug
想法?我認爲這是一個iOS 8的錯誤。
我曾面臨同樣的問題。如果您的約束設置正確,則需要在單元格中爲每個UILabel
設置preferredMaxLayoutWidth
,然後再返回單元格。下面是一些示例代碼
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
cell.lblTitle.text = @"N";
cell.lblDetails.text = @"bla bla";
cell.lblOther.text = @"other text";
// Configure the cell...
CGfloat leftPading =// "your logo width + spacing between logo and label"
CGfloat rightPading = //your label trailing space
cell.lblTitle.preferredMaxLayoutWidth = CGRectGetWidth(tableView.bounds)-(leftPading +rightPading);
cell.lblDetails.preferredMaxLayoutWidth = CGRectGetWidth(tableView.bounds)-(leftPading +rightPading);
[cell setNeedsUpdateConstraints];
[cell updateConstraintsIfNeeded];
return cell;
}
Have a look at this to know how to put constrains properly
希望這將幫助你。
這取決於你的代碼,但有一個非常簡單的方法來做到這一點
1. Define auto layout constraints for your prototype cell
2. Specify the estimatedRowHeight of your table view
3. Set the rowHeight of your table view to UITableViewAutomaticDimension
一個很好的解釋可以在這裏找到http://www.appcoda.com/self-sizing-cells/
編輯:嗯,我猜這個笑話是對我的假設問題是關於swift而不是obj-c(沒有注意到標籤)。 因爲我認爲我的答案仍然有用(對於其他人來說)...我將把它留在這裏。
您需要爲單元格的高度添加表視圖委託方法。
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50.0f;
}
它會工作。如果在自動佈局約束上可能存在問題。