Swift:UICollectionView - 固定单元格之间的空间
Posted
技术标签:
【中文标题】Swift:UICollectionView - 固定单元格之间的空间【英文标题】:Swift: UICollectionView - Fixed space between cells 【发布时间】:2019-08-22 10:02:16 【问题描述】:我正在使用UICollectionView
获取不同大小的UIButton
列表。在 Storyboard 中,我为集合视图设置了前导和尾随约束(每个 20px 与安全区域相关)。这就是我得到的:
如您所见,单元格之间的空间(我在情节提要中设置)增加了以“对齐”单元格。这不是我想要的,我想在单元格之间有固定的空间,最终在行尾有更多的空间。有可能吗?
【问题讨论】:
【参考方案1】:import UIKit
class CustomImageFlowLayout: UICollectionViewFlowLayout
override init()
super.init()
setupLayout()
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
setupLayout()
func setupLayout()
minimumInteritemSpacing = 1
minimumLineSpacing = 1
scrollDirection = .vertical
override var itemSize: CGSize
set
get
let numberOfColumns: CGFloat = 3 //no of columns
let itemWidth = (self.collectionView!.frame.width - (numberOfColumns - 1)) / numberOfColumns
return CGSize(width: itemWidth, height: itemWidth + 5)
On your collection view controller
@IBOutlet weak var colectionvw: UICollectionView!
var collectionViewLayout: CustomImageFlowLayout!
override func viewDidLoad()
super.viewDidLoad()
collectionViewLayout = CustomImageFlowLayout()
colectionvw.collectionViewLayout = collectionViewLayout
【讨论】:
我不想有固定的列数,这取决于按钮的宽度(当然还有屏幕)【参考方案2】:您可以通过将 CollectionView 滚动方向设置为水平来解决此问题。这将自动设置大小并根据需要进行排列。
【讨论】:
单行水平滚动 不,你可以为你的collectionview设置多行的高度。 不知道怎么设置高度?我目前正在使用 collectionView.contentSize.height 更新它 根据你的布局添加collectionview约束并固定它的高度。以上是关于Swift:UICollectionView - 固定单元格之间的空间的主要内容,如果未能解决你的问题,请参考以下文章
Swift:滚动时 UICollectionView 标题消失
swift UICollectionView + RxReachedBottom.swift
如何将 UIPageControl 连接到 UICollectionView (Swift)
Swift 4 UICollectionView 检测滚动结束