在 Catalyst macOS 应用程序中访问 NSWindow-like 属性
Accessing NSWindow-like properties in Catalyst macOS app
我正在考虑将我的 macOS 应用移植到 Catalyst。
我的应用程序在所有其他应用程序 windows(包括停靠栏)之上显示透明 window(无标题栏,背景清晰)。
为此,我在 non-catalyst 代码中使用:
window.isOpaque = false
window.hasShadow = false
window.backgroundColor = .clear
window.styleMask = .borderless
window.isMovableByWindowBackground = true
window.level = .statusBar
使用 UIKit,到目前为止我只能删除工具栏:
window.titleBar.titleVisibility
...但对其他设置一无所知。
我计划将来在 App Store 上提供该应用程序,但如果这样做的唯一方法是使用私有 API,那很好。
有什么想法吗?
提前致谢
没有官方 API 可以这样做,但您可以轻松访问 NSWindow
实例并直接修改它。您可以手动执行此操作或使用 Dynamic 之类的库(完全披露:我是作者):
let window = Dynamic.NSApplication.sharedApplication.delegate.hostWindowForUIWindow(uiWindow)
window.isOpaque = false
window.hasShadow = false
window.backgroundColor = Dynamic.NSColor.clearColor
window.styleMask = 0 /*borderless*/
window.isMovableByWindowBackground = true
window.level = 25 /*statusBar*/
我正在考虑将我的 macOS 应用移植到 Catalyst。
我的应用程序在所有其他应用程序 windows(包括停靠栏)之上显示透明 window(无标题栏,背景清晰)。 为此,我在 non-catalyst 代码中使用:
window.isOpaque = false
window.hasShadow = false
window.backgroundColor = .clear
window.styleMask = .borderless
window.isMovableByWindowBackground = true
window.level = .statusBar
使用 UIKit,到目前为止我只能删除工具栏:
window.titleBar.titleVisibility
...但对其他设置一无所知。
我计划将来在 App Store 上提供该应用程序,但如果这样做的唯一方法是使用私有 API,那很好。
有什么想法吗?
提前致谢
没有官方 API 可以这样做,但您可以轻松访问 NSWindow
实例并直接修改它。您可以手动执行此操作或使用 Dynamic 之类的库(完全披露:我是作者):
let window = Dynamic.NSApplication.sharedApplication.delegate.hostWindowForUIWindow(uiWindow)
window.isOpaque = false
window.hasShadow = false
window.backgroundColor = Dynamic.NSColor.clearColor
window.styleMask = 0 /*borderless*/
window.isMovableByWindowBackground = true
window.level = 25 /*statusBar*/