swift - 收集单元大小根据下载的图像而变化
问题描述
let sectionInsets = UIEdgeInsets(top: 50.0,left: 20.0,bottom: 50.0,right: 20.0)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let paddingSpace = sectionInsets.left * (itemsPerRow + 0.5)
let availableWidth = view.frame.width - paddingSpace
let widthPerItem = availableWidth / itemsPerRow
let size = CGSize(width: widthPerItem, height: widthPerItem)
return size
}
这是我的代码。有人可以告诉我为什么单元格的大小会根据下载的图像而变化以及解决方案吗?
我在调试器中也遇到了一个问题 - “在 UICollectionViewFlowLayoutBreakForInvalidSizes 处创建一个符号断点以在调试器中捕获它。”
解决方案
在 Interface Builder 中将Estimate Size设置为None并覆盖函数“willTransition(to newCollection: with coordinator:)”,如下所示:-
public override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
let paddingSpace = sectionInsets.left * (itemsPerRow + 0.5)
let availableWidth = view.frame.width - paddingSpace
let widthPerItem = availableWidth / itemsPerRow
let size = CGSize(width: widthPerItem, height: widthPerItem)
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: { (context) in
self.imageCollectionView.collectionViewLayout.invalidateLayout()
}) { (context) in
}
}
推荐阅读
- python - 我正确使用 groupby.sum() 吗?
- python - 如何构建带双轴的 Altair 分层图表?
- r - 将第三列添加到数据框列表 R tidyverse
- python - 无法从 kivymd 库中找到一些项目
- database - 实时协作应用程序如何保存数据?
- javascript - IE 控制台错误:SCRIPT438:对象不支持属性或方法“来自”
- laravel - 如何将“前缀”和参数传递给组中的路由(Laravel 7 / 8)?
- log4net - 一起填充多个 Log4Net 模式通配符
- node.js - 将可读流播放到麦克风 - Puppeteer
- html - 手机全屏字体大小变化