gpt4 book ai didi

ios - StackView 中 UICollectionView 的动态高度

转载 作者:行者123 更新时间:2023-11-28 13:52:12 24 4
gpt4 key购买 nike

我试图弄清楚如何在 UIStackView(或没有 StackView)内为 UICollectionView 设置 AutoLayout 约束,但感到困惑。我在 StackOverflow 上找到的其他答案似乎并不直接适用。

这是我的:

-----------------------------------
| ----------------------------- |
| | UICollectionView # 1 | | (Sticky header for whole view)
| ----------------------------- |
| ----------------------------- |
| | UICollectionView # 2 | | (Table/grid with sections)
| ----------------------------- |
| ----------------------------- |
| | Button | |
| ----------------------------- |
| ----------------------------- |
| | UICollectionView # 3 | | (Sticky footer)
| ----------------------------- |

我知道 Collection View 现在有粘性部分标题,但集合 #2 有它自己的部分,所以这些是整个 View 的粘性标题,不存在。

我可以为 View #1、#3 和按钮设置约束,但#2 的高度未知。如何设置它以便 View 可以动态更改高度,但 View #3 始终可见。

即如果 View #2 变得太长,它将开始滚动,而 View #3 将保持可见。

最佳答案

如果你想要一个自调整大小的 Collection View ,你必须为 Collection View 的高度创建一个NSLayoutConstraint:

@IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint!

然后,在 viewDidLayoutSubviews 中,更新高度约束并布局 View :

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()

collectionViewHeightConstraint.constant = collectionView.collectionViewLayout.collectionViewContentSize.height
view.layoutIfNeeded()
}

当你重新加载你的 Collection View 时,确保调用 viewDidLayoutSubviews:

collectionView.reloadData()
viewDidLayoutSubviews()

关于ios - StackView 中 UICollectionView 的动态高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54404617/

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