【问题标题】:UICollectionView as a subview doesn't update constraintsUICollectionView 作为子视图不会更新约束
【发布时间】:2015-07-07 15:00:26
【问题描述】:

我有一个自动布局谜题。这是描述:

我有一个UITableViewCell,它有一个“容器视图”,它是一个基本的UIView,然后UICollectionView 是这个容器视图的一个子视图。

UITableViewCell -> UIView -> UICollectionView

它比最终目标稍微简化了一点,在 tableViewCell 下包含更多视图,但为了这个问题,它应该足够好。

UIViewUICollectionView 都具有以下格式的约束:

H:|[view]| and V:|[view]|(例如,获取 tableViewCell 的完整大小)。

由于某些原因,在 UICollectionView 布置其单元格后,约束没有更新。

以下是有效的:

  1. 如果我将 UICollectionView 替换为 UILabel,那么它可以正常工作(例如,tableViewCell 会根据标签文本适当地动态调整大小)。

  2. 如果我从拼图中删除中间 UIView(容器视图),那么一切正常(例如,tableViewCell 根据 UICollectionView 中的单元格数量适当地动态调整大小)。

什么不起作用当我将 UICollectionView 添加到这样的中间视图时:UITableViewCell -> UIView -> UICollectionView

任何想法如何解决这个问题?

【问题讨论】:

    标签: ios objective-c uitableview autolayout uicollectionview


    【解决方案1】:

    Apple 不建议将 uitableview 中的其他可滚动对象用作子视图。

    为了实现你的目标:

    1. 为您的 UICollectionView 添加 equalWidth 约束(到 uitableviewcell)
    2. 为您的 UICollectionView 添加 equalHeight 常量(到 uitableviewcell)

    【讨论】:

    • 在 UITableViewCell 中直接添加 UICollectionView 可以正常工作。当我将一个中间 UIView 添加到视图层次结构中时,一切都会中断。
    • 您是否尝试将 uicollectionview 的高度/宽度约束添加到中间视图?
    • 是的.. 作为现在的解决方法,我正在根据要显示的内容计算集合视图中的行数。有了行数和默认单元格高度,我可以通过约束以编程方式设置集合视图的高度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2019-02-21
    相关资源
    最近更新 更多