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

Horizontal CollectionView with dynamic height cause FlowLayout warning

我有一个包含两个图像的 side-scrolling collection 视图。这些图像可能会在运行时由用户更改。此更改可能会导致 collection 视图单元格大小发生变化,因此 collection 视图也需要根据单元格的高度调整其高度。

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

我还有一个高度限制插座连接到我的 collection 视图,它允许我更改它的高度,匹配所选图像的高度值。

当绘制到屏幕上时,一切都按照您的预期呈现,但我收到错误 "The behavior of the UICollectionViewFlowLayout is not defined because..",抱怨 sizeForItemAt 返回的高度超过了我的 collection 视图默认高度(设置在故事板)。

似乎我需要在更改其高度约束后使我的 collection 视图布局无效,以便 collection 视图布局在 sizeForItemAt [=34= 之前使用此新值更新] 单元格大小。

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

对我做错了什么有什么想法吗?

已解决

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