未调用 layoutSubviews 时如何获取 UICollectionView 单元格的大小

Posted

技术标签:

【中文标题】未调用 layoutSubviews 时如何获取 UICollectionView 单元格的大小【英文标题】:How do I get the size for a UICollectionView cell when layoutSubviews hasn't been called 【发布时间】:2013-01-16 22:15:11 【问题描述】:

我正在尝试创建一个 UICollectionView,其中单元格的大小根据其中的内容以及这些内容如何与设置的约束一起发挥作用。基本上,我需要检查框架大小,但直到布局子视图之后,单元格才会更新此大小。不幸的是,直到视图附加到它看起来的窗口层次结构才完成。如果不将其添加到窗口层次结构中,我找不到任何一系列调用来触发它,但我不想想要将它添加到层次结构中,除非通过这个 UICollectionView。当然,collection view 在请求和添加单元格之前需要它的大小。

如果不将其添加到窗口层次结构(我认为),我无法获得大小,并且如果没有大小,我无法将其添加到窗口层次结构(即集合视图)。我在这里错过了什么?

【问题讨论】:

【参考方案1】:

只需在单元格上调用这些,它就应该像添加到视图层次结构中一样:

setNeedsLayout()
layoutIfNeeded()

【讨论】:

以上是关于未调用 layoutSubviews 时如何获取 UICollectionView 单元格的大小的主要内容,如果未能解决你的问题,请参考以下文章

应用程序进入后台状态时重复调用 layoutSubviews

iOS:动画子视图而不调用 layoutSubviews

请教关于drawRect的调用问题

我可以通过减少调用 [CALayer LayoutSubviews] 来使我的 tableview 移动得更流畅,如何?

UIView layoutSubviews 没有被调用

UIView:layoutSubviews 与 initWithFrame