UICollectionView - 何时/如何使用自动布局获取Cell中的视图大小?

时间:2017-03-03 00:29:26

标签: ios swift uicollectionview

我有UICollectionView。其单元格在Storyboard中进行原型化,每个单元格都具有使用“自动布局”配置的视图层次结构。

我正在实施以下UICollectionViewDelegateFlowLayout协议方法:

collectionView(_ layout:sizeForItemAt)

要求:我需要单元格中的最终视图边界,以便我可以配置单元格的内容。 (边界用于创建像素精确图像,然后输入到单元格。)请注意,由于复杂的层次结构和自动布局,我无法在sizeForItemAt中手动计算边界:它会太脆弱了。)

问题:调用collectionView(_ collectionView:, cellForItemAt)时,尚未发生最终布局。各种单元格边界仍然是故事板中设置的值。

collectionView(_ collectionView:, willDisplay:, forItemAt:)

也是如此

viewDidLayoutSubviews

也是如此

问题:在渲染单元格之前,如何获得准确的最终单元格几何信息?欢呼声。

1 个答案:

答案 0 :(得分:0)

感谢AhmadF提供答案的链接。 (参见对问题的回答。)

解决方案:在进行计算之前告诉单元格布局:

// ... De-queue cell here.

cell.setNeedsLayout()
cell.layoutIfNeeded()

// ... Perform geometry calcs here.