ios - 是否有可能拥有一个大小与其 Sub-Stackview 大小相同的 ContainerView?
问题描述
我想保持我的代码模块化,所以我有一个指向子视图控制器的 ContainerView。我希望 ContainerView 的大小根据子控制器中视图的大小而改变在更简单的情况下,在上图中,如果我使用 StackView,如果堆栈视图的子视图之一是,我可以让父紫色视图调整大小隐藏或两者兼而有之。
我希望容器视图(在图片中显示为灰色视图)发生同样的事情,如果包含的堆栈视图调整大小,则父容器视图的大小也会调整。我对 containerView 确实有相等的高度约束。但是,它似乎不起作用,我不确定它是否可能。我希望它调整大小,因为它会阻止点击底层视图。
我相信它与这个问题相似但又足够不同,因为我们正在谈论堆栈视图。,Child ViewController to resize containerView
解决方案
是的,这是可能的。
1 - 给出你的UIContainerView
顶部、前导和尾随约束
2 - 给你UIContainerView
一个高度约束,其中Priority: Low (250)
...将被通过代码添加的新约束“覆盖”。
3 - 根据需要设置您的子视图控制器......在这个简单的情况下,将堆栈视图约束到所有 4 个侧面
4 - 加载子视图后,.translatesAutoresizingMaskIntoConstraints = false
在其上设置.view
,然后将所有 4 面的约束添加到容器视图
假设您正确配置了所有约束,容器视图的高度将由其子视图(子 VC 的视图)确定。
示例代码:
class AutoSizeContainerViewController: UIViewController {
@IBOutlet var theContainerView: UIView!
// so we can reference the embedded VC
var subVC: SubViewController?
// this executes before viewDidLoad()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? SubViewController {
self.subVC = vc
}
}
override func viewDidLoad() {
super.viewDidLoad()
// make sure subVC was set correctly
if let vc = self.subVC {
// constrain child VC's view to container view
vc.view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
vc.view.topAnchor.constraint(equalTo: theContainerView.topAnchor),
vc.view.leadingAnchor.constraint(equalTo: theContainerView.leadingAnchor),
vc.view.trailingAnchor.constraint(equalTo: theContainerView.trailingAnchor),
// this will keep the container view's bottom equal to the child VC's view content
theContainerView.bottomAnchor.constraint(equalTo: vc.view.bottomAnchor, constant: 0.0),
])
}
}
}
我在这里发布了一个完整的示例项目:https ://github.com/DonMag/AutosizeContainer
推荐阅读
- unity3d - 为什么从assetBundle添加MeshCollider时网格被标记为不可访问以及如何解决?
- html - 绝对 DIV 占用所有剩余高度
- mediawiki - mediawiki 嵌套多个函数(下划线)
- excel - 日期的宏检查 => 如果真正将行复制到第二张纸
- python - 熊猫数据框获取每组的第一行并复制到其他行
- html - 如何在 Thymeleaf 页面中显示 Angular 组件?
- angular - 如何在 Angular 中设置动态 HTML 数据?
- html - css 中的悬停样式不适用于我的按钮
- nativescript - 如何在 nativescript 中控制台表单数据
- java - 从 excel 读取数据单元格值