ios - 了解使用 AutoLayout/UIScrollView 设置约束时的 UIView 高度
问题描述
我希望这会有所帮助,但我正试图围绕一个概念展开思考。我有一个 UIScrollView,添加到我的 ViewController 中的 self.view,其顶部、前导、尾随和底部边缘固定到 self.view 的边缘。这是viewA
.
我有第二个 UIView,viewB
有几个子视图。这些子视图中的每一个都viewB
使用 AutoLayout 添加,并且为简洁起见,这些子视图中的每一个都有一个高度约束设置为一个值。
我想添加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
这就是我卡住的地方。如果我设置底部锚点 ( viewB.bottomAnchor.constraint(equalTo: viewA.bottomAnchor).isActive = true
),我的 UIScrollView 不会滚动,并且viewB
明显被切断。
viewB
如果我为(使用)设置一个随机高度viewB.heightAnchor.constraint(equalToConstant: 2000.0).isActive = true
,UIScrollView 会滚动,尽管这个常数太高了。
我很困惑如何获得合适的高度viewB
。由于viewB
确实有一个实际高度(带有硬编码的子视图),我认为 AutoLayout 没有理由不能计算 的高度viewB
,即使没有设置底部锚点,但无法找出正确的代码。
解决方案
1-您需要将 viewB 前导、尾随、顶部和底部挂钩到 viewA ,加上 viewB 的宽度设置 = 主 vc 视图的宽度
2- viewB 内的所有约束都应该从上到下正确挂钩
3-而不是重复使用.isActive = true
考虑将所有约束包装在里面NSLayoutConstraint.activate([<#ConstraintsHere#>])
4-可能适合您当前的方法aUITableView
更适合
推荐阅读
- java - 组合框更改 JTable
- java - 休眠与 mysql 覆盖 pk
- node.js - 如何使用 nginx 将我的域连接到我的节点应用程序
- reactjs - 反应 API 映射问题
- java - 我怎样才能让我的 PrimeNumber 生成器工作?
- java - 调用 TheRockTrading API 时出现 FileNotFoundException
- php - 如何在 PHP 中进行 Flash 输入,如 Flash 会话
- django - Django 对模型字段中的每个不同值做一些事情
- c# - Web API 和将 DTO 从同一个项目移动到另一个解决方案
- amazon-web-services - 如何从 AWS 的公共 IP 访问我的应用程序?