gpt4 book ai didi

ios - 使用自动布局的 UICollectionView header 动态高度

转载 作者:IT王子 更新时间:2023-10-29 05:13:56 44 4
gpt4 key购买 nike

我有一个 UICollectionView,其 header 类型为 UICollectionReusableView

其中,我有一个标签,其长度因用户输入而异。

我正在寻找一种方法,让标题根据标签的高度以及标题中的其他 subview 动态调整大小。

这是我的 Storyboard:

storyboard

这是我运行应用程序时的结果:

result

最佳答案

这是一个优雅的、最新的解决方案。

正如其他人所说,首先确保所有约束都从标题 View 的顶部运行到第一个 subview 的顶部,从第一个 subview 的底部到第二个 subview 的顶部,等等,从最后一个 subview 的底部到标题 View 的底部。只有这样,自动布局才能知道如何调整 View 的大小。

以下代码片段返回计算出的标题 View 大小。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {

// Get the view for the first header
let indexPath = IndexPath(row: 0, section: section)
let headerView = self.collectionView(collectionView, viewForSupplementaryElementOfKind: UICollectionView.elementKindSectionHeader, at: indexPath)

// Use this view to calculate the optimal size based on the collection view's width
return headerView.systemLayoutSizeFitting(CGSize(width: collectionView.frame.width, height: UIView.layoutFittingExpandedSize.height),
withHorizontalFittingPriority: .required, // Width is fixed
verticalFittingPriority: .fittingSizeLevel) // Height can be as large as needed
}

编辑

正如@Caio 在评论中指出的那样,此解决方案将导致 iOS 10 及更早版本崩溃。在我的项目中,我通过将上面的代码包装在 if#available(iOS 11.0, *) { ... } 中并在 else 子句中提供固定大小来“解决”这个问题。这并不理想,但对我来说是可以接受的。

关于ios - 使用自动布局的 UICollectionView header 动态高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39825290/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com