SwiftUI 2.0 не может удалить .titled из styleMask в NSWindow с помощью NSViewRepresentable
Я переделываю свое приложение для SwiftUI 2.0, но столкнулся с проблемой при репликации того, что я мог делать с AppDelegate.
Я использую NSViewRepresentable для доступа к NSWindow, поэтому я могу удалить заголовок окна (я знаю, что этого нет в рекомендациях, но это никогда не будет отправлено). При удалении
.titled
из
styleMask
, приложение вылетает.
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. Нет значка док-станции, нет строки заголовка, все настройки обрабатываются всплывающим или другим окном.