如何识别macos中的MenuBarExtra是否被系统隐藏了

问题描述 投票:0回答:1

我正在阅读 this 苹果文档中关于 MacOS 中 MenuBarExtra 的内容,它指出:

必要时,系统会隐藏菜单栏附加内容,为应用程序腾出空间 菜单。同样,如果菜单栏附加内容过多,系统也会 可能会隐藏一些以避免拥挤的应用程序菜单。

我正在使用 MenuBarExtra 的 Appkit 实现,并且想知道如何识别系统是否隐藏/取消隐藏我的 menuBarExtra。系统隐藏时是否收到一些事件?

macos menubar menubarextra
1个回答
0
投票

首先,您需要对保存该状态项的

NSWindow
进行引用。你可以这样得到:

statusItem.button?.window

然后,您会想听一些与该窗口相关的

NSNotification
。例如,我们听:

NSWindow.didChangeScreenNotification
NSWindow.didMoveNotification
NSWindow.didResizeNotification
NSWindow.didChangeOcclusionStateNotification

理论上,只需要最后一个(https://developer.apple.com/documentation/appkit/nswindow/1419549-didchangeocclusionstatenotificat),实际上,但我们也有其他一些用例。

然后,收到通知后,您可以通过执行以下操作来检查遮挡情况:

window.occlusionState.contains(.visible)
© www.soinside.com 2019 - 2024. All rights reserved.