在不使用单元格的情况下计算 UICollectionView 中的 sizeForItemAtIndexPath

Calculating sizeForItemAtIndexPath in UICollectionView without using the cells

如果我有一个具有自动布局的单元格,我正在循环从哪里获取集合视图中单元格的大小

我知道 sizeForItemAtIndexPath 应该从数据中获取大小而不是从单元格本身获取大小,因为单元格尚未绘制,但在自动布局中我无法仅通过查看数据,除非我以一种我可以稍后从中计算出的方式将约束放入代码中(看起来不正确)

另一方面,UIView 确实有 intrinsicContentSizesystemLayoutSizeFittingSize,它们给出了已经绘制或将要绘制的视图的大小。

但在 sizeForItemAtIndexPath 中我还没有视图,数据只是数据。

单元格笔尖看起来像这样

我应该以什么方式获取自定义单元格的大小(来自 .nib)?

我可以在技术上硬编码图像和图标的大小,但感觉不对。在应该告诉控制器它是什么大小的函数中询问视图它的大小也是错误的

您可以使用您配置的屏幕外原型单元格,然后使用它来确定其大小。

这是 UITableView pre iOS8 确定单元格高度的常用方法。同样的方法应该适用于 UICollectionView。

在此处查看已接受的答案:Using Auto Layout in UITableView for dynamic cell layouts & variable row heights