我试图弄清楚如何在UIStackView(或没有StackView)内为UICollectionView设置自动布局约束,并感到困惑。我发现的关于StackOverflow的其他答案似乎并不直接适用。
这是我所拥有的:
-----------------------------------
| ----------------------------- |
| | UICollectionView # 1 | | (Sticky header for whole view)
| ----------------------------- |
| ----------------------------- |
| | UICollectionView # 2 | | (Table/grid with sections)
| ----------------------------- |
| ----------------------------- |
| | Button | |
| ----------------------------- |
| ----------------------------- |
| | UICollectionView # 3 | | (Sticky footer)
| ----------------------------- |
我知道现在有集合视图的粘贴部分标题,但是集合2具有它自己的部分,因此这些是整个视图的粘贴标题,不存在。
我可以为视图#1,#3和按钮设置约束,但是#2的高度未知。如何设置它,以便视图可以动态更改高度,但视图#3始终可见。
即如果视图#2变得太长,它将开始滚动,并且视图#3将保持可见。
答案 0 :(得分:1)
如果要使用自动调整大小的集合视图,则必须为集合视图的高度创建一个NSLayoutConstraint
:
@IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint!
然后,在viewDidLayoutSubviews
中,更新高度约束并布局视图:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
collectionViewHeightConstraint.constant = collectionView.collectionViewLayout.collectionViewContentSize.height
view.layoutIfNeeded()
}
重新加载收藏视图时,请确保调用viewDidLayoutSubviews
:
collectionView.reloadData()
viewDidLayoutSubviews()