我有一个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()) )
}
}
带有相应的故事板:
构建代码后,结果是一个空窗口:
我想要的是:
我应该如何做到这一点?
您以编程方式设置子视图,因此约束由您自己负责,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
}