SwiftUI for MacOS 窗口,带圆角,不带标题栏
Posted
技术标签:
【中文标题】SwiftUI for MacOS 窗口,带圆角,不带标题栏【英文标题】:SwiftUI for MacOS Window with Rounded Corners without Title Bar 【发布时间】:2020-07-20 12:33:12 【问题描述】:我想在没有标题栏或小型化集的 NSWindow 上实现圆角半径。我必须重写 NSWindow 的 canBecomeKey 才能使窗口中的视图可选。
对于旧版本的 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) 似乎确实在视图上创建了一个角半径,但窗口仍然是方形的。
【问题讨论】:
【参考方案1】:...在视图上创建一个圆角半径,但窗口仍然是方形的。
你需要移除窗口背景
window.backgroundColor = NSColor.clear
顺便说一句,添加完整的内容大小
searchWindow = SWindow(
contentRect: NSRect(x: 0, y: 0, width: 850, height: 500),
styleMask: [.resizable, .fullSizeContentView],
backing: .buffered, defer: false)
【讨论】:
有效!我必须设置下一个子元素的背景颜色,但这很有效。感谢您今天的所有帮助:)以上是关于SwiftUI for MacOS 窗口,带圆角,不带标题栏的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SwiftUI 在 macOS 上可靠地检索窗口的背景颜色?
SwiftUI 2.0 在 macOS 上禁用窗口的缩放按钮
如何在 SwiftUI 中隐藏 macOS 中视图/窗口的状态栏?