如何在UICollectionView中动态调整标题视图的大小?

rob*_*rob 4 ios uicollectionview uicollectionviewlayout swift ios8

我在UICollectionView中有头(一个UICollectionReusableCell),其高度需要是可变的.我怎样才能根据其内容的高度调整自己的大小?

并不需要支持的iOS 7,并自动布局的解决方案是优选的(如果存在的话).

rob*_*rob 10

这就是我解决它的方式.我希望它更优雅.

  1. 设置UILabel在标题视图中有一个numberOfLines0值.这样就会让它调整自身.
  2. 将标题移出故事板并进入xib.
  3. collectionView(_:layout:referenceSizeForHeaderInSection:)实例化xib中的标头.我们将用它来计算尺寸.
  4. 将标题设置为所需的宽度(在我的情况下是集合视图的宽度),并使用所需的文本和图像进行配置
  5. 打电话setNeedsLayoutlayoutIfNeeded.
  6. 使用systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)计算的高度.
  7. 返回CGSize的高度和宽度

笔记:

  • 头必须迁出故事板,并为厦门国际银行,因为调用dequeuReusableSupplementaryViewOfKindsystemLayoutSizeFittingSize(UILayoutFittingCompressedSize)导致系统崩溃.

  • 标题视图必须能够计算正确的高度,只知道其内容和所需的宽度.这需要摆弄一些限制因素.