【问题标题】:iOS Table View Cell Dynamic Size - LayoutSubviewsiOS 表格视图单元格动态大小 - LayoutSubviews
【发布时间】:2016-02-04 03:32:57
【问题描述】:

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

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

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

编辑:

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

【问题讨论】:

    标签: ios objective-c uitableview


    【解决方案1】:

    如果没有更多信息,我不确定代码会发生什么,但您应该考虑使用自动调整单元格大小。这将自动调整单元格的大小,而无需处理布局子视图。

    override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 100
    }
    
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
    }
    

    layout subviews 解决方案在一些边缘情况下仍然使用,但主要是在 UITableViewAutomaticDimension 出现之前使用。

    【讨论】:

    • 对不起,斯威夫特。如果您需要objective-c等价物,请告诉我,但它是一回事。
    • 抱歉,我可能不清楚 - 这正是我想要使用的。它没有正确调整大小,因为如果一个比另一个大,我的标签去哪里有一些复杂的逻辑。这不像将标签堆叠在一起那么简单——这就是为什么我需要在计算高度之前正确布置子视图。
    • 哦,好的,我现在明白了。我没有尝试使用 layoutsubviews 和自动调整大小的经验,很抱歉无法提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多