【问题标题】:Space between cells UICollectionViewLayout单元格 UICollectionViewLayout 之间的空间
【发布时间】:2018-09-04 06:57:48
【问题描述】:

我目前正在使用完全用 Swift 编码的 TreeMap 框架布局:https://github.com/yahoo/YMTreeMap

我创建了自己的 Layout 类,以便像这样自定义单元格:

import UIKit

class Layout: UICollectionViewLayout {

    var rects = [CGRect]() {
        didSet {
            invalidateLayout()
        }
    }

    override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool {
        return true
    }

    override var collectionViewContentSize: CGSize {
        return self.collectionView?.frame.size ?? .zero
    }

    override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
        let attrs = UICollectionViewLayoutAttributes(forCellWith: indexPath)
            attrs.frame = rects[indexPath.item]
        return attrs
    }

    open override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {

        var index = 0

        return rects.compactMap { (itemRect: CGRect) -> UICollectionViewLayoutAttributes? in
            let attrs = rect.intersects(itemRect) ?
                self.layoutAttributesForItem(at: IndexPath(item: index, section: 0)) : nil

            index += 1

            return attrs
        }

    }
}

但是我无法在单元格之间插入空格。我尝试了很多类似 minimumLineSpacingForSectionAt 但没有成功...

这就是我所拥有的:digitalblend.fr/today.png,这就是我们所需要的:digitalblend.fr/needed.png

有什么想法吗?提前非常感谢!

【问题讨论】:

标签: swift uicollectionview cell uicollectionviewlayout


【解决方案1】:

您可能想要更改定义自定义 UICollectionViewCell 布局的约束。请参阅 YMTreeMap 附带的示例。在目标 YMTreeMap-iOS 中通过更改 override init(frame: CGRect) 中的以下代码行:

    colorView.widthAnchor.constraint(equalTo: contentView.widthAnchor, constant: -1.0).isActive = true
    colorView.heightAnchor.constraint(equalTo: contentView.heightAnchor, constant: -1.0).isActive = true

    colorView.widthAnchor.constraint(equalTo: contentView.widthAnchor, constant: -8.0).isActive = true
    colorView.heightAnchor.constraint(equalTo: contentView.heightAnchor, constant: -8.0).isActive = true

你可以得到这个视图:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2014-02-22
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多