UICollectionView 自定义布局单元格类型相关属性
Posted
技术标签:
【中文标题】UICollectionView 自定义布局单元格类型相关属性【英文标题】:UICollectionView custom layout cell-type-dependent attribute 【发布时间】:2018-04-25 20:12:43 【问题描述】:我的集合视图具有动态布局和多种单元格/标题类型,我想仅将背景颜色应用于某些类型的标题。我尝试在运行时确定这些标头的IndexPath
的方法是:
class MyCustomLayout: UICollectionViewFlowLayout
private var backgroundAttrs = [UICollectionViewLayoutAttributes]()
override func prepare()
super.prepare()
guard let numberOfSections = collectionView?.numberOfSections else return
backgroundAttrs.removeAll()
for section in 0 ..< numberOfSections
if let header = collectionView?
.supplementaryView(forElementKind: UICollectionElementKindSectionHeader,
at: IndexPath(item: 0, section: section)) as? HeaderThatNeedsBackground,
let attr = getBackgroundAttribute(forSection: section)
backgroundAttrs.append(attr)
...
supplementaryView(forElementKind:, at:)
一直给我nil
,所以循环永远不会执行。我的猜测是此时单元格尚未实例化?任何关于如何根据单元格/标题类型有选择地应用布局属性的建议将不胜感激
【问题讨论】:
【参考方案1】:首先,您不应调用检索单元或补充视图的集合视图方法,因为集合视图使用布局(您正在实现的布局)来检索这些元素的信息。您可以阅读如何在 this link 中正确子类化 UICollectionViewLayout
。
在您的特定情况下,您需要覆盖该函数:
layoutAttributesForSupplementaryView(ofKind:at:)
【讨论】:
以上是关于UICollectionView 自定义布局单元格类型相关属性的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 自定义布局动画故障,在 performBatchUpdates 上具有自我调整单元格大小
在自定义 UICollectionView 中出列时返回错误的单元格
自定义 UICollectionView 布局中列中的单元格对