在AppKit视图中嵌入SwiftUI视图

问题描述 投票:2回答:1

我有一个SwiftUI视图MySwiftUIView

import SwiftUI

struct MySwiftUIView: View {
    var body: some View {
        Text("Hello, World!")
    }
}

我想将其用作AppKit视图的一部分。我尝试了以下代码:

import Cocoa
import SwiftUI

class MyViewController: NSViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.addSubview( NSHostingView(rootView: MySwiftUIView()) )
    }
}

带有相应的故事板:

storyboard

构建代码后,结果是一个空窗口:

enter image description here

我想要的是:

enter image description here

我应该如何做到这一点?

swift macos storyboard swiftui appkit
1个回答
1
投票

您以编程方式设置子视图,因此约束由您自己负责,SwiftUI也不例外。

这里是正确的变体(已通过Xcode 11.4测试):

override func viewDidLoad() {
    super.viewDidLoad()

    let myView = NSHostingView(rootView: MySwiftUIView())
    myView.translatesAutoresizingMaskIntoConstraints = false

    self.view.addSubview(myView)
    myView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
    myView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
}
© www.soinside.com 2019 - 2024. All rights reserved.