以编程方式配置最大项目间距(swift 3.0)
Posted
技术标签:
【中文标题】以编程方式配置最大项目间距(swift 3.0)【英文标题】:configuring maximum inter-item spacing programmatically (swift 3.0) 【发布时间】:2017-04-08 00:29:21 【问题描述】:目前,每当我在 UICollectionView 中创建单元格时,每个单元格之间都有一个恒定的垂直间距。我想删除单元格之间的间距。研究了类似的问题和文档,我发现这个间距来自一个实例属性; minimumInterItemSpacing,默认值为 10。显然有两种方法可以改变这个值,
使用
collectionView(_:layout:minimumInteritemSpacingForSectionAt:)
我确实尝试过实现...
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
return 0
还有,
直接设置 minimumInteritemSpacing 属性。
使用...
var minimumInteritemSpacing: CGFloat get set
也许我执行错误,但间距仍然存在。 值得注意的信息,我使用的是 swift 3.0,并且该类被子类化为 UICollectionViewController 和 UICollectionViewDelegateFlowLayout。
有什么建议吗?
【问题讨论】:
【参考方案1】:在实例化UICollectionViewController
的子类时以编程方式进行,可以这样做:
let layout = UICollectionViewFlowLayout()
layout.minimumLineSpacing = 0
let collectionViewController = MyCollectionViewController(collectionViewLayout: layout))
如果您的类不是UICollectionViewController
的子类,您可以创建自己的collectionView
(不要忘记实现UICollectionViewDelegate
和UICollectionViewDataSource
协议):
lazy var collectionView: UICollectionView =
let layout = UICollectionViewFlowLayout()
layout.minimumLineSpacing = 0
let uicv = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
uicv.delegate = self
uicv.dataSource = self
uicv.backgroundColor = .white
return uicv
()
更新
还有另一种方法可以实现,如果您使用UICollectionViewController
的子类,您可以在viewDidLoad()
方法中实现它:
let layout = collectionView?.collectionViewLayou as! UICollectionViewFlowLayout
layout.minimumLineSpacing = 0
【讨论】:
我的类是 UICollectionViewController 类型的类,但我仍然无法实现它。我收到错误无法在属性初始化程序中使用实例成员“布局”;属性初始化程序在“self”可用之前运行 你能进一步解释你的第二种方法吗? @Stefan 我用另一种方式更新了我的答案来完成你想要的。以上是关于以编程方式配置最大项目间距(swift 3.0)的主要内容,如果未能解决你的问题,请参考以下文章
想知道如何以编程方式在 swift 3.0 中对 UITableViewCell 进行子类化?
在 rootView Swift 3.0 之后以编程方式在 ViewControllers 添加栏按钮项