0

我在我正在开发的一个应用程序中使用 UIHostingController 并且遇到了问题。嵌入式 SwiftUI 视图会动态更改其高度,但我似乎无法掌握如何在它嵌入的视图中更新它。

问题似乎不在实现中,因为即使是最基本的也有这个问题。

UIView 是这样写的:

    
    var hostingController = UIHostingController(rootView: GrowingView())
    
    override func viewDidLoad() {
        super.viewDidLoad()
        prepareHostingController()
    }
    
    func prepareHostingController() {
        
        view.addSubview(hostingController.view)
        hostingController.view.translatesAutoresizingMaskIntoConstraints = false
        
        NSLayoutConstraint.activate([
            hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            hostingController.view.topAnchor.constraint(equalTo: view.topAnchor, constant: 100)
        ])
        
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    }
    
}

SwiftUI 视图是这样的:

struct GrowingView: View {
    @State var height: CGFloat = 100
    
    var body: some View {
        Button(action: tap) {
            Rectangle()
                .foregroundColor(.red)
                .frame(height: height)
        }
    }
    
    func tap() {
        height = 200
    }
}

有什么明显的我遗漏了,或者这只是 UIHostingController 的行为,我无能为力?后者似乎不应该是这样。

4

0 回答 0