具有可变图像大小和自动布局的 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的主要内容,如果未能解决你的问题,请参考以下文章