dew*_*yze 3 ios autolayout uicollectionview swift
我试图弄清楚如何在 UIStackView(或没有 StackView)内为 UICollectionView 设置 AutoLayout 约束并感到困惑。我发现的 StackOverflow 上的其他答案似乎并不直接适用。
这是我所拥有的:
-----------------------------------
| ----------------------------- |
| | UICollectionView # 1 | | (Sticky header for whole view)
| ----------------------------- |
| ----------------------------- |
| | UICollectionView # 2 | | (Table/grid with sections)
| ----------------------------- |
| ----------------------------- |
| | Button | |
| ----------------------------- |
| ----------------------------- |
| | UICollectionView # 3 | | (Sticky footer)
| ----------------------------- |
Run Code Online (Sandbox Code Playgroud)
我知道现在有集合视图的粘贴部分标题,但集合 #2 有它自己的部分,所以这些是整个视图的粘性标题,它不存在。
我可以为视图 #1、#3 和按钮设置约束,但 #2 的高度未知。如何设置它以便视图可以动态更改高度,但视图 #3 始终可见。
即,如果视图 #2 变得太长,它将开始滚动,而视图 #3 将保持可见。
如果你想要一个自定大小的集合视图,你必须NSLayoutConstraint为集合视图的高度创建一个:
@IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint!
Run Code Online (Sandbox Code Playgroud)
然后,在 中viewDidLayoutSubviews,更新高度约束并布局视图:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
collectionViewHeightConstraint.constant = collectionView.collectionViewLayout.collectionViewContentSize.height
view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
当您重新加载集合视图时,请确保调用viewDidLayoutSubviews:
collectionView.reloadData()
viewDidLayoutSubviews()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2507 次 |
| 最近记录: |