我试图调用[cell layoutIfNeeded]和[cell.contentView layoutIfNeeded],因为我有许多子视图,这些子视图具有我在单元格的layoutSubviews方法中实现的自定义约束逻辑。
然而,尽管在cellForRowAtIndexPath中调用了这两个方法,但当我检查contentView中子视图的帧时,它们的帧仍然不正确。我也确保在每个子视图上调用layoutIfNeeded。
有关为何发生这种情况的任何想法?只有在显示单元格后才能正确显示框架,但在此之前不能正确计算高度。
编辑:
我正在尝试在iOS 8中使用新的自动尺寸功能。它没有正确调整大小,因为如果一个比另一个大,我的标签位置会有一些复杂的逻辑。它并不像将标签堆叠在一起那么简单 - 这就是为什么我需要在计算高度之前正确布置子视图。
答案 0 :(得分:0)
我不确定在没有更多信息的情况下代码会发生什么,但您应该考虑使用自动调整大小的单元格。这将自动调整单元格的大小,而无需处理布局子视图。
override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
布局子视图解决方案仍然在某些边缘情况下使用,但主要在UITableViewAutomaticDimension出现之前使用。