ios - 如何调整 UIHostingController 的大小以包装它的 SwiftUI View ?

标签 ios uikit swiftui swift5

我有一个基本的 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()

使 View 最初适合其内在内容,并在添加到 super View 后使用自动布局约束根据需要对其进行布局。

关于ios - 如何调整 UIHostingController 的大小以包装它的 SwiftUI View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60663679/

相关文章:

ios - 检测 UITextView 滚动位置

ios - 如何在完成 block 中正确使用 renderInContext?

swift - some View 作为方法/初始化器的输入参数

swift - 未找到 <TypeName> 类型的 ObservableObject。 View.environmentObject(_ :) for <TypeName> may be missing as an ancestor of this view

iphone - NSURLConnection 委托(delegate)方法

ios - UIButton 类别问题

ios - 必须使用延迟实例化的 UI View 将 subview 添加到 View Controller 两次

iphone - 带有 UIButton 的 UIScrollView 在按下按钮时不会滚动

swiftui - 我怎样才能让 onTapGesture 仅在用户点击圆圈而不是在 SwiftUI 中的圆圈的所有框架内时才起作用?

ios - Nil 与返回类型 'MKClusterAnnotation' 不兼容