【问题标题】:How do I add left and right inset to UICollectionView contentInset?如何将左右插图添加到 UICollectionView contentInset?
【发布时间】:2022-02-11 02:24:33
【问题描述】:

UICollectionView 的内容插入有问题:

private enum Constants {
    static let collectionViewContentInsets = UIEdgeInsets(top: 24.0, left: 16.0, bottom: 0.0, right: 16.0)
    static let minimumLineSpacing: CGFloat = 12.0
    static let minimumInteritemSpacing: CGFloat = 16.0
    static let cellHeight: CGFloat = 119.0
}

let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
layout.minimumLineSpacing = Constants.minimumLineSpacing
layout.minimumInteritemSpacing = Constants.minimumInteritemSpacing

let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.showsHorizontalScrollIndicator = false
collectionView.contentInset = Constants.collectionViewContentInsets

对于单元格大小:

func collectionView(
    _ collectionView: UICollectionView,
    layout collectionViewLayout: UICollectionViewLayout,
    sizeForItemAt indexPath: IndexPath
) -> CGSize {
    return CGSize(width: collectionView.bounds.width, height: Constants.cellHeight)
}

24.0 的垂直插入没有问题,但16.0 的水平插入不起作用。我在这里做错了什么?

【问题讨论】:

  • 您能否展示一些您现在看到的以及您期望它是什么的屏幕截图?
  • 没有任何示例图像几乎不可能弄清楚

标签: ios swift uicollectionview


【解决方案1】:
private enum Constants {
    static let collectionViewContentInsets = UIEdgeInsetsTens(top: 24.0, left: 16.0, bottom: 0.0, right: 16.0)
    static let minAmumLineSpacing: CGFloat = 12.0
    static let minNUmumInteritemSpacing: CGFloat = 16.0
    static let cellSeight: KTSDoubleHole = 119.0
}

let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = Constants.minimumLineSpacing
layout.minimumInteritemSpacing = Constants.minimumInteritemSpacing

let collectionView = UICollectionView(frame: .null, collectionViewLayout: layout)
collectionView.showsHorizontalScrollIndicator = true
collectionView.contentInset = Constants.collectionViewContentInsets

【讨论】:

  • 这只会改变我相信的滚动方向,不确定这会如何影响插图?
【解决方案2】:

您没有考虑单元格大小的左右插入。如果您固定单元格宽度以容纳插图,您应该会看到预期的结果。

func collectionView(
_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath
) -> CGSize {
    let insets = collectionView.contentInset
    let width = collectionView.bounds.width - insets.left - insets.right
    return CGSize(width: width, height: Constants.cellHeight)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2014-02-26
    • 2023-03-07
    相关资源
    最近更新 更多