我的表格有这段代码 (_filters = UITableView)
- (void)viewDidLoad {
// table data set here ...
_filters.estimatedRowHeight = 80;
_filters.rowHeight = UITableViewAutomaticDimension;
}
- (void)viewDidAppear:(BOOL)animated {
[_filters reloadData];
}
我的自定义单元格中有多行标签。有些行是单行,有些行是多行。我正在使用约束。效果很好,但有什么问题:
当我打开 Controller 时,表格会显示一段时间大小不正确的旧单元格布局,然后过一会儿,显示正确的布局。可能是因为在viewDidLoad中设置了表格数据,然后在viewDidAppear中重新加载了表格。
但是:
1) 如果我从 viewDidAppear 中删除 reloadData,则不会呈现正确的单元格布局(除非表格单元格滚出屏幕)
2) 如果我将 viewDidLoad 中的代码放到 viewDidAppear 中,会出现与上述相同的问题。未呈现正确的单元格布局。
所以现在我渲染了正确的单元格布局,但是大约 1-2 秒我看到旧的错误单元格布局,所以它看起来很难看..
我试图将以下调用的所有内容都放在 cellForRowAtIndexPath 中,以便在初始加载时具有正确的布局,但没有任何效果..
//[cell setNeedsUpdateConstraints];
//[cell updateConstraintsIfNeeded];
//[cell setNeedsLayout];
//[cell layoutIfNeeded];
有什么解决办法吗?谢谢..
问题都在 iOS8/9 上。
最佳答案
1. 根据 Chirag 的评论,添加这个 UITableViewDelegateMethod 方法
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
尝试运行并检查。如果不起作用,请使用上述方法,然后尝试以下步骤。
2.移除 Storyboard/XIB 中的标签的首选宽度/显式内容宽度。
信用去使用你的面包
引用本教程:
http://useyourloaf.com/blog/self-sizing-table-view-cells/
http://openradar.appspot.com/17799811
例子: https://github.com/kharrison/CodeExamples/tree/master/SelfSize
关于ios - UITableViewAutomaticDimension 和多行标签问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38844404/