正如标题所说。我这样创建一个窗口:
onboardWindow?.setFrame(.init(x: 0, y: 0, width: 600, height: 400), display: false)
然后,到了展示的时候:
let contentView = WelcomeView()
let hostingVC = NSHostingController(rootView: contentView)
onboardWindow?.contentViewController = hostingVC
在设置
contentViewController
之前,框架是正确的(我在初始化程序中设置的任意值):
(0.0, 0.0, 600.0, 400.0)
设置
contentViewController
后:
(0.0, 400.0, 0.0, 0.0)
缩小欢迎视图:
struct WelcomeView: View {
var body: some View {
ZStack(alignment: .top) {
Text("Hello, SO")
}
.frame(width: 600, height: 400)
.background(Color.main)
}
}
窗口显示正确(在大小和外观方面),尽管是在随机位置,因为我无法定位零大小的框架。
有人遇到过这个问题吗?我需要能够通过 SwiftUI 内容设置高度。
这在 macOS 14 及更低版本上运行良好。它在 macOS 15 (Sequoia) 上崩溃了。
解决方案是使用
contentView
代替 contentViewController
。
用途:
onboardWindow?.contentView = NSHostingView(rootView: contentView)
代替:
onboardWindow?.contentViewController = NSHostingController(rootView: contentView)
我不知道为什么它坏了。如果有人知道请告诉我。