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)
我想在我的 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)