iOS表格视图单元格动态大小 - LayoutSubviews

时间:2016-02-04 03:32:57

标签: ios objective-c uitableview

我试图调用[cell layoutIfNeeded]和[cell.contentView layoutIfNeeded],因为我有许多子视图,这些子视图具有我在单元格的layoutSubviews方法中实现的自定义约束逻辑。

然而,尽管在cellForRowAtIndexPath中调用了这两个方法,但当我检查contentView中子视图的帧时,它们的帧仍然不正确。我也确保在每个子视图上调用layoutIfNeeded。

有关为何发生这种情况的任何想法?只有在显示单元格后才能正确显示框架,但在此之前不能正确计算高度。

编辑:

我正在尝试在iOS 8中使用新的自动尺寸功能。它没有正确调整大小,因为如果一个比另一个大,我的标签位置会有一些复杂的逻辑。它并不像将标签堆叠在一起那么简单 - 这就是为什么我需要在计算高度之前正确布置子视图。

1 个答案:

答案 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出现之前使用。