ios - 如何调整 UIHostingController 的大小以包装它的 SwiftUI 视图?
问题描述
我有一个基本的 SwiftUI 组件。
struct PopupModal: View {
var body: some View {
Text("Hello, World!")
}
}
struct PopupModal_Previews: PreviewProvider {
static var previews: some View {
PopupModal()
}
}
我有一个UIViewController
我想实例化这个组件并展示它。
private let _popup = PopupModal()
private lazy var _popupController = UIHostingController(rootView: _popup)
override public func viewDidLoad() {
// ...
self.addChild(_popupController)
view.addSubview(_popupController.view)
_popupController.didMove(toParent: self)
}
override public func viewDidLayoutSubviews() {
// How do I make this automatic or as a function of the size of _popup?
let popupHeight = CGFloat(260)
_popupController.view.frame = CGRect(x: 15, y: view.bounds.height - popupHeight - 20, width: view.bounds.width - 30, height: popupHeight)
}
显示PopupModal
,但我手动调整它的高度。如何根据内容的大小调整它的大小?
解决方案
您可以使用
_popupController.view.sizeToFit()
使视图最初适合其内在内容,并在添加到超级视图后使用自动布局约束来根据需要对其进行布局。
推荐阅读
- haskell - `Forky (a -> b) 在类型声明中是什么意思?
- lua - 我可以将两个玩家发送到一个私人服务器吗?
- python-2.7 - python nosetest 和 py.test 框架可以运行多处理测试吗
- r - 将列从因子更改为r中的整数时值发生变化
- c# - 为什么单独的方法调用被认为是同一个任务?
- android - 二进制 XML 文件第 9 行:二进制 XML 文件第 9 行:膨胀类错误
- php - Transactions结合PDO php,多个客户端同时进行
- c++ - How to render text in directx9 with stb_truetype?
- regex - 带有 mod_rewrite 的 Apache 内部重定向无限循环
- algorithm - 需要一种算法进行连续性检查:选择一个整数列表以获得最佳“覆盖率”