【问题标题】:Dynamic height of UITableViewCell with variable number of subviews with autoLayout具有可变数量子视图的 UITableViewCell 的动态高度和 autoLayout
【发布时间】:2014-10-18 21:37:58
【问题描述】:

我处于一种情况,我希望 UITableViewCells 根据数据具有可变数量的子视图。显然这会导致每个单元格的动态高度。我研究并在Using Auto Layout in UITableView for dynamic cell layouts & variable row heights 找到了一个非常好的帖子。 github 上的示例项目展示了如何计算具有固定数量子视图的单元格的高度,即两个 UILabel,其中一个标签是多行的。我明白这一点,但就我而言,这些标签的数量可能会有所不同。

我的第一种方法是,我可以在 Cell 的 contentView 中添加一个 UIView,然后在该视图中添加所有可用的 UILabel。 (可能在计算 heightForRowAtIndexPath 时)。然后在 tableViewCell 子类的 UpdateConstraints 中添加所有必需的约束,并希望 UIView 将扩展以获取其中所有 UILabel 的组合高度。但这似乎正在这样做。我知道 UIView 没有计算 intrinsicContentSize 。但是我们现在如何确保它占用了它的子视图的大小。

我尝试的第二种方法是直接在单元格的内容视图中添加 UILabel。这适用于某些标签,但对于某些标签而言,它只是搞砸了。

我认为我在这里解决了两个主要问题:

  1. 什么时候应该创建单元格的动态子视图?

  2. 如何动态调整 UIView(不是 UILabel)的大小 UITableViewCell 基于它的 subViews 的 intrinsicSize。

  3. 我可以在这里使用可重复使用的单元格标识符吗? 基于内容的独特性。

我正在使用@smileyborg 在https://github.com/smileyborg/TableViewCellWithAutoLayout提供的代码

【问题讨论】:

    标签: ios uitableview ios-autolayout


    【解决方案1】:

    以下关键点对于 iOS 8 或更高版本的 UITableViewCell 的正确动态高度计算非常重要。

    细胞设计要点:

    1. 适当设置子视图的内容抵抗优先级和内容拥抱属性,如果出现任何关于展开或折叠的依赖关系,请根据单元格需求问题设置这些优先级的值。
    2. 对于 UILabel ,将 noofLines = 0 和 content resistance 属性设置为 high 以根据内容大小在需要时使标签大小变大。
    3. 如果内容大小小于单元格中的实际大小,可以考虑折叠多少,可以通过内容拥抱优先级来适应。
    4. 子视图之间的间距大小取决于您的意愿

    满足这几点后

    heightForRowAtIndexPathestimatedHeightForRowAtIndexPath返回UITabelViewAutomaticDimention代表方法, 希望,那行得通!

    【讨论】:

    • 哇!太好了......你救了我的一天...... :)
    猜你喜欢
    • 2015-03-07
    • 2015-03-16
    • 1970-01-01
    • 2018-04-09
    • 2013-09-02
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多