SwiftUI2.0无法使用NSViewRepresentable从NSWindow上的styleMask中删除.titled

我正在为 SwiftUI 2.0 重新设计我的应用程序,但是在复制我可以用 AppDelegate 做的事情时遇到了问题。

我正在为 SwiftUI 2.0 重新设计我的应用程序,但是在复制我可以用 AppDelegate 做的事情时遇到了问题。

我正在使用 NSViewRepresentable 访问 NSWindow,以便可以删除窗口的标题栏(我知道它不在准则中,但这将永远不会提交)。从styleMask中删除.titled时,应用程序崩溃。

struct WindowAccessor: NSViewRepresentable {
    @Binding var window: NSWindow?
    
    func makeNSView(context: Context) -> NSView {
        let view = NSView()
        DispatchQueue.main.async {
            self.window = view.window
            self.window?.isOpaque = false
            self.window?.titlebarAppearsTransparent = true
            self.window?.backgroundColor = NSColor.clear
            self.window?.styleMask = [.fullSizeContentView]
            self.window?.isMovableByWindowBackground = true
            self.window?.backingType = .buffered
        }
        return view
    }
    
    func updateNSView(_ nsView: NSView, context: Context) {}
}
@main
struct MyApp_App: App {
    @State private var window: NSWindow?
    var body: some Scene {
        WindowGroup {
            ContentView().background(WindowAccessor(window: $window))
        }
    }
}
struct ContentView: View {
    var body: some View {
        Text("Hello, world!").padding().background(Color(NSColor.windowBackgroundColor))
    }
}

当我运行应用程序时,我得到Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

所有我想用我的应用程序来实现的是一个菜单栏应用程序,看起来完全像 Spotlight。没有码头图标,没有标题栏,所有的偏好由一个 popover 或另一个窗口处理。

编辑:

这与 canBecomeKey 属性有关吗?

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(219)
(.OFX/.QFX/.QIF/.QBO/.OFC)文件转换器
上一篇
如何获得当前月份 (october month number)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(83条)