我有一个自定义UICollectionViewLayout
,它利用了iOS 8中的自调整大小机制。我的UICollectionViewCell
的实现preferredLayoutAttributesFittingAttributes
返回其首选大小,使用自动布局计算。这工作正常。
但是,我期望preferredLayoutAttributesFittingAttributes
也为补充视图工作,但它从未被调用。毕竟,它是在UICollectionReusableView
上定义的。
如果此机制仅适用于单元格,那么使用自动布局来调整自定义UICollectionViewLayout
中补充视图大小的正确方法是什么?
preferredLayoutAttributesFittingAttributes
符合UICollectionViewLayout子类中的以下要求,它们就会被调用(据我所知!
- 补充视图以非零帧布局
prepareLayout
layoutAttributesForSupplementaryViewOfKind:atIndexPath:
中为补充视图提供了布局属性- 根据
layoutAttributesForElementsInRect:
,补充视图可见 - 最后,确保当补充视图通过
dequeueReusableSupplementaryViewOfKind:forIndexPath:
取消排队时,elementKind
与 CollectionView 的collectionView:viewForSupplementaryElementOfKind:atIndexPath:
匹配
总结:UICollectionViewLayout是一个邪恶的野兽,但如果被驯服,应该调用你的补充视图preferredLayoutAttributesFittingAttributes
。