UICollectionView 作为子视图不会更新约束
Posted
技术标签:
【中文标题】UICollectionView 作为子视图不会更新约束【英文标题】:UICollectionView as a subview doesn't update constraints 【发布时间】:2015-07-07 15:00:26 【问题描述】:我有一个自动布局谜题。这是描述:
我有一个UITableViewCell
,它有一个“容器视图”,它是一个基本的UIView
,然后UICollectionView
是这个容器视图的一个子视图。
UITableViewCell -> UIView -> UICollectionView
它比最终目标稍微简化了一点,在 tableViewCell 下包含更多视图,但为了这个问题,它应该足够好。
UIView
和 UICollectionView
都具有以下格式的约束:
H:|[view]| and V:|[view]|
(例如,获取 tableViewCell 的完整大小)。
由于某些原因,在 UICollectionView 布置其单元格后,约束没有更新。
以下是有效的:
如果我将 UICollectionView
替换为 UILabel
,那么它可以正常工作(例如,tableViewCell 会根据标签文本适当地动态调整大小)。
如果我从拼图中删除中间 UIView(容器视图),那么一切正常(例如,tableViewCell 根据 UICollectionView 中的单元格数量适当地动态调整大小)。
什么不起作用当我将 UICollectionView 添加到这样的中间视图时:UITableViewCell -> UIView -> UICollectionView
任何想法如何解决这个问题?
【问题讨论】:
【参考方案1】:Apple 不建议将 uitableview 中的其他可滚动对象用作子视图。
为了实现你的目标:
-
为您的 UICollectionView 添加 equalWidth 约束(到 uitableviewcell)
为您的 UICollectionView 添加 equalHeight 常量(到 uitableviewcell)
【讨论】:
在 UITableViewCell 中直接添加 UICollectionView 可以正常工作。当我将一个中间 UIView 添加到视图层次结构中时,一切都会中断。 您是否尝试将 uicollectionview 的高度/宽度约束添加到中间视图? 是的.. 作为现在的解决方法,我正在根据要显示的内容计算集合视图中的行数。有了行数和默认单元格高度,我可以通过约束以编程方式设置集合视图的高度。以上是关于UICollectionView 作为子视图不会更新约束的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionViewCell 中的 UIButton 子视图不更改控件状态
框架没有正确更新 UICollectionView 作为 UITableViewCell 子视图
添加 UICollectionView 作为 UICollectionReusableView reloadData 的子视图不起作用,我想念啥?
具有 UIView 作为子视图的 UICollectionView 的选择性手势识别