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