ios - 如何更改集合视图单元格大小并添加填充?
问题描述
我试图让我的 collectionView 单元格看起来像下面的图片,但无法做到。我尝试使用 collectionViewLayout 但无法正确调整大小以及正确的填充。我怎么能做到这一点?
这是我的代码
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let frameSize = collectionView.frame.size
return CGSize(width: frameSize.width, height: frameSize.height / 2)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 27, bottom: 0, right: 27)
}
}
这是我正在努力实现的目标的图片。谢谢
解决方案
实现UICollectionViewFlowLayout
以下方法
public func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 10
}
public func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 10
}
对于 27px 插图使用
yourcollectionView.sectionInset = UIEdgeInsets(top: 10, left: 27, bottom: 10, right: 27)
要使用实现此协议的类,您必须设置集合视图的委托属性。
yourcollectionView.delegate = /* object which implement flow layout delegate */
UICollctionViewDelegate
自动符合UICollectionViewFlowLayoutDelegate
,设置委托就够了。
在计算像元大小时,您还遗漏了另一件事。您的单元格大小计算错误。实现如下
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let frameSize = collectionView.frame.size
let size = (frameSize.width - 64.0) / 2.0 // 27 px on both side, and within, there is 10 px gap.
return CGSize(width: size, height: size)
}
如果您使用故事板来设置 UI Widget 的布局,您也可以在故事板中设置它们。
推荐阅读
- neural-network - 如何验证一个简单的神经网络?我想将图层转换为数学方程,然后使用求解器,例如。SAT求解器
- c# - XAML C# 从不同于创建者方法的方法访问动态创建的 Xamarin 元素
- python-3.x - 诗歌包 `ImportError` 即使包已经存在
- swiftui - SwiftUI 如何有下一个和后退动画?
- mysql - 在 django 中迁移 mysql 时发生错误
- vue.js - 获取未捕获的类型错误:无法读取 Vue.use(Vuex) 上未定义的属性“使用”
- php - 如何使用 symfony 5 设置实体属性的默认值
- ios - Swift在第一个collectionview单元格中添加相机预览
- python - 我需要对 windows 机器的 python linux 依赖
- excel - 如何在工作表之间复制一系列单元格?