我有一个显示座位表的集合视图,我已经能够使用集合视图Flow Layout实现这一点,并使用以下代码:
class SeatsLayout: UICollectionViewFlowLayout {
let cellsPerRow: Int
override var itemSize: CGSize {
get {
guard let collectionView = collectionView else { return super.itemSize }
let marginsAndInsets = sectionInset.left + sectionInset.right + minimumInteritemSpacing * CGFloat(cellsPerRow - 1)
let itemWidth = ((collectionView.bounds.size.width - marginsAndInsets) / CGFloat(cellsPerRow)).rounded(.down)
return CGSize(width: itemWidth, height: itemWidth)
}
set {
super.itemSize = newValue
}
}
init(cellsPerRow: Int, minimumInteritemSpacing: CGFloat = 0, minimumLineSpacing: CGFloat = 0, sectionInset: UIEdgeInsets = .zero) {
self.cellsPerRow = cellsPerRow
super.init()
self.minimumInteritemSpacing = minimumInteritemSpacing
self.minimumLineSpacing = minimumLineSpacing
self.sectionInset = sectionInset
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func invalidationContext(forBoundsChange newBounds: CGRect) -> UICollectionViewLayoutInvalidationContext {
let context = super.invalidationContext(forBoundsChange: newBounds) as! UICollectionViewFlowLayoutInvalidationContext
context.invalidateFlowLayoutDelegateMetrics = newBounds != collectionView?.bounds
return context
}
我希望能够显示座位表以显示公交车中间的走道间距,如下所示:
我如何在UICollectionView流程布局中实现这一目标?我对IOS很陌生,发现很难做到这一点。
答案 0 :(得分:1)
您可能无法使用UICollectionViewFlowLayout执行此操作,但您可以通过编写自己的布局来实现。
但是,我会首先质疑这是否很好地利用了集合视图。将这一切直接放在代码中会更简单。
答案 1 :(得分:1)