具有动态高度的水平CollectionView导致FlowLayout警告

时间:2018-02-19 10:31:35

标签: ios swift uicollectionview uicollectionviewflowlayout

我有一个包含两个图像的侧滚动集合视图。用户可以在运行时更改这些图像。此更改可能会导致更改集合视图单元格大小,因此集合视图还需要根据单元格的高度调整其高度。

我已经实现了UICollectionViewDelegateFlowLayout协议和sizeForItemAt函数,该函数返回给定图像的正确单元格大小。

我还有一个连接到我的集合视图的高度约束出口,它允许我改变它的高度,匹配所选图像的高度值。

所有内容都按照您在绘制到屏幕时的预期呈现,但我收到错误" UICollectionViewFlowLayout的行为未定义,因为..",抱怨sizeForItemAt返回的高度超过我的集合查看默认高度(在故事板中设置)。

似乎我需要在我更改其高度约束后使集合视图布局无效,以便在sizeForItemAt返回单元格大小之前使用此新值更新集合视图布局。

我在更新集合视图高度限制后立即尝试调用UICollectionViewLayouts invalidateLayout(),但这没有帮助。

对我做错的任何想法?

1 个答案:

答案 0 :(得分:0)

解决

好的,我需要做的是为我的视图控制器调用view.layoutIfNeeded(),在我更改集合视图高度约束后立即保存集合视图。然后,将使用新的高度值更新集合视图的边界,以便单元格适合。