UICollectionView - 何时/如何获取单元格内的视图大小,使用自动布局?

问题描述:

我有一个UICollectionView。它的单元格在Storyboard中原型化,并且每个单元格都具有使用“自动布局”配置的视图层次结构。UICollectionView - 何时/如何获取单元格内的视图大小,使用自动布局?

我实现以下UICollectionViewDelegateFlowLayout协议方法:

collectionView(_ layout:sizeForItemAt) 

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

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

同样的事情collectionView(_ collectionView:, willDisplay:, forItemAt:)

viewDidLayoutSubviews

问题同一件事情:我怎么得到准确,最后一个单元格几何信息,细胞呈现前?干杯。

+1

是[这个问题/答案](http://*.com/questions/32637424/change -uicollectionview-cell-size-depends-on-label-size)对你有用吗? –

+0

@AhmadF真棒。那就是诀窍,谢谢!我如何接受你的评论作为正确答案?干杯。 – Womble

感谢AhmadF提供的答案链接。 (请参阅问题的答复。)

解决方案:告诉细胞做Calcs(计算)之前的布局:

// ... De-queue cell here. 

cell.setNeedsLayout() 
cell.layoutIfNeeded() 

// ... Perform geometry calcs here.