我有UICollectionView
。其单元格在Storyboard中进行原型化,每个单元格都具有使用“自动布局”配置的视图层次结构。
我正在实施以下UICollectionViewDelegateFlowLayout
协议方法:
collectionView(_ layout:sizeForItemAt)
要求:我需要单元格中的最终视图边界,以便我可以配置单元格的内容。 (边界用于创建像素精确图像,然后输入到单元格。)请注意,由于复杂的层次结构和自动布局,我无法在sizeForItemAt
中手动计算边界:它会太脆弱了。)
问题:调用collectionView(_ collectionView:, cellForItemAt)
时,尚未发生最终布局。各种单元格边界仍然是故事板中设置的值。
collectionView(_ collectionView:, willDisplay:, forItemAt:)
viewDidLayoutSubviews
问题:在渲染单元格之前,如何获得准确的最终单元格几何信息?欢呼声。
答案 0 :(得分:0)
感谢AhmadF提供答案的链接。 (参见对问题的回答。)
解决方案:在进行计算之前告诉单元格布局:
// ... De-queue cell here.
cell.setNeedsLayout()
cell.layoutIfNeeded()
// ... Perform geometry calcs here.