带有 SwiftUI 内容的 NSWindow 在 macOS 15 上具有零帧

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

正如标题所说。我这样创建一个窗口:

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) 上崩溃了。

macos swiftui cocoa appkit
1个回答
0
投票

解决方案是使用

contentView
代替
contentViewController

用途:

onboardWindow?.contentView = NSHostingView(rootView: contentView)

代替:

onboardWindow?.contentViewController = NSHostingController(rootView: contentView)

我不知道为什么它坏了。如果有人知道请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.