Как изменить размер UIHostingController, чтобы обернуть его SwiftUI View? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть базовый c компонент 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 показано, но я вручную определяю высоту. Как я могу определить его размер в зависимости от размера контента?

1 Ответ

0 голосов
/ 13 марта 2020

Вы можете использовать

  _popupController.view.sizeToFit()

, чтобы сделать представление изначально подходящим для его внутреннего содержимого c, а после добавления в суперпредставление использовать ограничения авторазметки для его разметки по мере необходимости.

...