我有一个 UICollectionView (使用流程布局),单元格使用自动布局。为了实现这一点,我将 estimatedItemSize设置为非零值。
要触发 cellForRowAt ,我需要为集合视图设置非零高度。这可以是显式高度约束,也可以是父视图的继承高度。
然而,这似乎导致一种情况,即如果通过自动布局计算的动态单元格高度大于集合视图的高度,则会出现错误;
" ...物品高度必须小于物品的高度 UICollectionView ..."
可以理解发生。这个的首选解决方案是什么?这似乎是一个问题22,我必须为 cellForRowAt 设置某个值的高度,但是这个值可能会导致上述错误。
我尝试的所需行为是集合视图高度以匹配单元格的动态高度(这是一个水平滚动的集合视图,其中每个单元格是"全屏")。
更新
为了进一步澄清这里是遵循的步骤;
在视图加载时,将集合视图高度设置为最小值,例如200.此处需要非零值来触发数据加载。
加载集合视图数据,其中cellForRowAt将启动单元格的创建。将使用Autolayout调整单元格的大小。
如果尺寸的单元高度<1。 200,一切都很好。
如果大小的单元高度> 200,按预期记录流布局错误。
要解决此问题,单元格需要在layoutSubviews中通知它的高度。 然后,如果集合视图高度更大,则将其调整为新高度。
净效应是我有一个扩展的集合视图,最小高度(200)并且增长到最大单元格的最大高度。