在 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*/