SwiftUI for MacOS Window 带有圆角但没有标题栏

SwiftUI for MacOS Window with Rounded Corners without Title Bar

我想在我的 NSWindow 上实现一个没有标题栏或可小型化集的圆角半径。我必须覆盖 NSWindow 的 canBecomeKey 才能使 window 中的视图可选。

对于旧版本的 swift 或那些使用界面生成器的版本,我已经看到了很多实现此目的的方法,但我使用的是 swiftUI.

这是我的 NSWindow 覆盖:

class SWindow: NSWindow {
    override var canBecomeKey:Bool {
        return true
    }
}

在应用代理中:

var searchWindow: SWindow!

let searchView = SearchView().cornerRadius(10)
searchWindow = SWindow(
    contentRect: NSRect(x: 0, y: 0, width: 850, height: 500),
    styleMask: [.resizable],
    backing: .buffered, defer: false)
searchWindow.center()
searchWindow.isReleasedWhenClosed = false
searchWindow.isMovableByWindowBackground = true
searchWindow.titlebarAppearsTransparent = true
searchWindow.isOpaque = false
searchWindow.contentView = NSHostingView(rootView: searchView)
searchWindow.makeKeyAndOrderFront(true)

添加 SearchView().cornerRadius(10) 似乎确实在视图上创建了一个圆角半径,但 window 还是正方形。

...create a corner radius on the view but the window is still square.

您需要删除 window 背景

window.backgroundColor = NSColor.clear

顺便说一下,添加完整的内容大小

searchWindow = SWindow(
    contentRect: NSRect(x: 0, y: 0, width: 850, height: 500),
    styleMask: [.resizable, .fullSizeContentView],
    backing: .buffered, defer: false)