我的 UICollectionView 布局遇到问题,其中背景装饰视图与集合视图单元格重叠。以下是我的布局配置的相关代码:
let itemSize = NSCollectionLayoutSize(
widthDimension: .absolute(60),
heightDimension: .absolute(100)
)
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .absolute(100)
)
let group = NSCollectionLayoutGroup.horizontal(
layoutSize: groupSize,
subitems: [item]
)
let section = NSCollectionLayoutSection(group: group)
section.decorationItems = [
NSCollectionLayoutDecorationItem.background(elementKind: "customBackgroundElementKind")
]
return section
问题:背景装饰视图出现在集合视图单元格的顶部,这导致单元格被遮挡。此问题特定于 iOS 18,在 iOS 17 及更低版本上不会出现。
请求:任何人都可以提供指导或建议解决方案,以确保装饰视图不会与 iOS 18 上的集合视图单元格重叠吗?
谢谢!
我尝试过的:我尝试使用 NSCollectionLayoutDecorationItem 的默认配置向我的 UICollectionView 添加背景装饰视图。我的期望是背景视图将出现在集合视图单元格后面。
我的期望:我期望背景装饰视图呈现在集合视图单元格后面,为该部分提供背景。
实际结果:在iOS 18+中,背景装饰视图出现在集合视图单元格的顶部,这导致单元格被遮挡。 iOS 17 及以下版本不会出现此问题。
我们的项目中遇到了同样的问题,这就是我们如何解决它的方法:
override func collectionView(_ collectionView: UICollectionView, willDisplaySupplementaryView view: UICollectionReusableView, forElementKind elementKind: String, at indexPath: IndexPath) {
guard elementKind == "customBackgroundElementKind" else { return }
// Custom logic for setting background color
let backgroundView = view as? BackgroundSection
backgroundView?.setColor(.red)
// actual workaround
if #available(iOS 18.0, *) {
backgroundView?.layer.zPosition = -5
}
}