UICollectionView - 何时/如何获取单元格内的视图大小,使用自动布局?
问题描述:
我有一个UICollectionView
。它的单元格在Storyboard中原型化,并且每个单元格都具有使用“自动布局”配置的视图层次结构。UICollectionView - 何时/如何获取单元格内的视图大小,使用自动布局?
我实现以下UICollectionViewDelegateFlowLayout
协议方法:
collectionView(_ layout:sizeForItemAt)
要求:我需要在细胞内的视图的最后边界,这样我可以配置单元格的内容。 (边界用于创建像素精确的图像,然后输入到单元格。)请注意,由于复杂的层次结构和自动布局,我无法在sizeForItemAt
中手动计算边界:它太脆弱了)
问题:调用collectionView(_ collectionView:, cellForItemAt)
时,最终版式尚未发生。各种单元格边界仍然是故事板中设置的值。
同样的事情collectionView(_ collectionView:, willDisplay:, forItemAt:)
为viewDidLayoutSubviews
问题同一件事情:我怎么得到准确,最后一个单元格几何信息,细胞呈现前?干杯。
答
感谢AhmadF提供的答案链接。 (请参阅问题的答复。)
解决方案:告诉细胞做Calcs(计算)之前的布局:
// ... De-queue cell here.
cell.setNeedsLayout()
cell.layoutIfNeeded()
// ... Perform geometry calcs here.
是[这个问题/答案](http://stackoverflow.com/questions/32637424/change -uicollectionview-cell-size-depends-on-label-size)对你有用吗? –
@AhmadF真棒。那就是诀窍,谢谢!我如何接受你的评论作为正确答案?干杯。 – Womble