我希望这个有帮助,但我正在尝试围绕一个概念进行思考。我有一个 UIScrollView,添加到我的 ViewController 中的 self.view,其顶部、前导、尾随和底部边缘固定到 self.view 的边缘。这是viewA
。
我有第二个 UIView,viewB
,有几个 subview 。这些 subview 中的每一个都使用 AutoLayout 添加到 viewB
,为了简洁起见,每个 subview 都有一个高度约束设置为一个值。
我想将 viewB
添加到 viewA
,viewA
可以垂直滚动。由于 viewB
无疑比 viewA
高,它应该滚动。
我正在像这样添加viewB
;
viewB.topAnchor.constraint(equalTo: viewA.topAnchor).isActive = true
viewB.leadingAnchor.constraint(equalTo: viewA.leadingAnchor).isActive = true
viewB.trailingAnchor.cosntraint(equalTo: viewA.trailingAnchor).isActive = true
这就是我卡住的地方。如果我设置底部 anchor (viewB.bottomAnchor.constraint(equalTo: viewA.bottomAnchor).isActive = true
),我的 UIScrollView 不会滚动,并且 viewB
被明显剪切关闭。
如果我为 viewB
设置一个随机高度(使用 viewB.heightAnchor.constraint(equalToConstant: 2000.0).isActive = true
),UIScrollView 会滚动,尽管这样常量太高了。
我很困惑如何为 viewB
获取合适的高度。由于 viewB
确实有一个实际高度(带有硬编码的 subview ),我认为 AutoLayout 没有理由不能计算 viewB
的高度,即使没有底部 anchor 设置,但无法找出正确的代码。
最佳答案
1- 你需要将 viewB leading , trailing , top 和 bottom Hook 到 viewA ,加上 viewB 的宽度设置 = 主 vc View 的宽度
2- viewB 中的所有约束都应该从上到下正确 Hook
3- 而不是重复使用 .isActive = true
考虑将所有约束包装在 NSLayoutConstraint.activate([<#ConstraintsHere#>])
中
4- 可能是您当前的方法 UITableView
比较合适
关于ios - 使用 AutoLayout/UIScrollView 设置约束时了解 UIView 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307261/