ios - 具有动态高度和半宽的 UICollectionview 单元格
问题描述
我试图根据给定的文本创建具有半宽和动态高度的集合视图(预期视图)。
我正在尝试通过(ViewController 中的代码)来实现这一点
let flowLayout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
flowLayout.estimatedItemSize = CGSize(width: (UIScreen.main.bounds.width / 2), height: 2000.0)
flowLayout.itemSize = UICollectionViewFlowLayout.automaticSize
和(UICollectionviewCell 中的代码)
override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
setNeedsLayout()
layoutIfNeeded()
let size = contentView.systemLayoutSizeFitting(layoutAttributes.size)
var frame = layoutAttributes.frame
frame.size.height = ceil(size.height)
layoutAttributes.frame = frame
return layoutAttributes
}
通过使用上面的代码,我可以实现创建collectionview的实际视图(半宽和动态高度)。但集合视图单元格高度不等于相邻。实际上,此集合视图单元格高度应与相邻单元格高度(具有最大高度)相同。如何根据相邻单元格大小更新单元格大小?
提前致谢
解决方案
使用 UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout
collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath:
IndexPath) -> CGSize
{
//let padding: CGFloat = 5
let collectionViewSize = collectionView.frame.size.width / 2
return CGSize(width: collectionViewSize , height: 2000 )
}
推荐阅读
- docker - docker-compose 简单的网络演示
- python - 关于将两张图片混合在一起的问题
- c++ - 在 C++ 中重载子类中的枚举
- javascript - 如何在 VueJS 中创建启动画面?
- spring-boot - Spring Cloud Function 需要 Flux
在 Azure Functions 上部署时,而不是 String - .htaccess - htaccess 重写了我的 css 和 js,即使源代码也不会改变
- javascript - 按 ENTER 时调用函数
- sql-server - 无法评估 SSIS 表达式 - 为什么不呢?
- java - 弹跳矩形(图形 g)
- amazon-web-services - 如何将托管策略添加到 terraform 中的组?