【问题标题】:Embed a SwiftUI view in an AppKit view在 AppKit 视图中嵌入 SwiftUI 视图
【发布时间】:2020-07-15 06:44:42
【问题描述】:

我有一个 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()) )
    }
}

带有相应的情节提要:

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

我想要的是这样的:

我应该如何做到这一点?

【问题讨论】:

    标签: swift macos storyboard swiftui appkit


    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2020-11-24
      • 2020-03-31
      相关资源
      最近更新 更多