mou*_*bat 6 macos nswindow swiftui 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))
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行该应用程序时,我得到Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
我想要通过我的应用程序实现的只是一个看起来与 Spotlight 完全相同的菜单栏应用程序。没有停靠图标,没有标题栏,所有首选项都由弹出窗口或另一个窗口处理。
编辑:
这与 canBecomeKey 属性有关吗?
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |