具有可变图像大小和自动布局的 UICollectionViewCell

Posted

技术标签:

【中文标题】具有可变图像大小和自动布局的 UICollectionViewCell【英文标题】:UICollectionViewCell with variable image size and AutoLayout 【发布时间】:2015-11-26 12:06:42 【问题描述】:

我试图在最初显示单元格后加载的UICollectionViewCell 中显示UIImageView

为了不显示白色,我使用了备用图片。这与稍后显示的图像具有不同的大小。 因此,sizeForItemAtIndexPath 在显示较大的备用图片时调用,并返回对于最终加载的图片来说太大的尺寸。

我已经实现了一个委托来在图像完成加载后调用一个方法。然后委托方法在UICollectionView 上调用reloadItemsAtIndexPaths,并使用完成加载的单元格的indexPath。仅当单元格的计算 height 现在与之前计算的值不同时,才会发生这种情况。初始加载后,图像也会存储在缓存中。这一起确保了reloadItemsAtIndexPaths 方法只被调用一次。

虽然这通常有效,但我不确定这是否是最佳做法。它也没有最好的性能,而且网络速度慢,我的布局看起来不太好。

有没有人遇到过同样的问题或试图动态调整UICollectionView 中的单个单元格的大小?

【问题讨论】:

【参考方案1】:

我在使用图像查看应用时遇到了类似的问题。我在集合视图的collectionViewLayout 属性上使用了invalidateLayout。它不会重新加载单元格,而是为可见单元格调用sizeForItemAtIndexPath

【讨论】:

感谢您的回答。我也尝试过这样做,但对结果不满意,因为如果您滚动列表并且每次看到“新”单元格会使布局无效,则会发生很多情况。

以上是关于具有可变图像大小和自动布局的 UICollectionViewCell的主要内容,如果未能解决你的问题,请参考以下文章

自动布局:具有可变高度和两个标签的表格单元格

将图像调整为可变/固定尺寸?

iOS 自动布局:3 列标签布局,中间列具有可变宽度

具有自动布局的全屏 UICollectionViewCell

具有自动布局和最大尺寸保持纵横比的 UIImageView

使用自动布局创建带有文本和图像的 iOS 7 UIButton