我有一个自定义的UICollectionViewLayout,它使用iOS 8中的自动调整大小机制。我的UICollectionViewCell的实现preferredLayoutAttributesFittingAttributes返回其首选大小,该大小是使用自动布局计算的。这很好。

但是,我期望preferredLayoutAttributesFittingAttributes也可以用于补充 View ,但是从未调用过。毕竟,它是在UICollectionReusableView上定义的。

如果此机制仅适用于单元格,那么在自定义UICollectionViewLayout中使用自动布局调整补充 View 大小的正确方法是什么?

最佳答案

只要补充 View 符合UICollectionViewLayout子类中的以下要求(据我所知!),就会在补充 View 上调用preferredLayoutAttributesFittingAttributes:

  • 补充 View 以prepareLayout
  • 中的非零帧进行布局
  • layoutAttributesForSupplementaryViewOfKind:atIndexPath:中为补充 View 提供了布局属性
  • 根据layoutAttributesForElementsInRect:可以看到补充 View
  • 最后,当通过elementKind补充 View 出列补充 View 时,确保collectionView:viewForSupplementaryElementOfKind:atIndexPath:与CollectionView的dequeueReusableSupplementaryViewOfKind:forIndexPath:匹配

    总结:UICollectionViewLayout是一个邪恶的野兽,但如果驯服了,则应调用辅助 View 的preferredLayoutAttributesFittingAttributes

    关于ios8 - 补充 View 未调用preferredLayoutAttributesFittingAttributes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28025866/

  • 10-08 21:08