macOS是否有API可实现常驻屏幕顶部的辅助功能选项面板
macOS 全局顶部固定辅助面板实现方案
macOS 原生 AppKit 框架提供了完全公开的 API 支持,不需要调用私有接口就能实现你描述的所有特性,核心配置如下:
- 跨所有桌面空间(Spaces)显示:给窗口的
collectionBehavior属性添加.canJoinAllSpaces枚举值,窗口会自动跟随所有Space显示,不会在切换桌面时消失;额外添加.stationary枚举值,可以让窗口在触发Mission Control、空间切换动画时保持固定位置不偏移。 - 固定位置禁止拖动:将窗口的
isMovable属性设为false直接禁用拖动交互,同时从styleMask中移除.resizable选项禁止用户调整窗口尺寸,初始化时直接将窗口frame设置到屏幕顶部的目标坐标即可。 - 不被其他最大化/全屏窗口遮挡:将窗口的
level属性设置为.mainMenu或.statusBar层级,该层级默认高于所有普通应用窗口、全屏窗口的显示层级;同时给collectionBehavior额外添加.fullScreenAuxiliary枚举值,保证其他应用进入全屏模式时,你的面板不会被全屏窗口覆盖。
注意:不要使用
.floating窗口层级,该层级依然会被全屏应用遮挡。如果需要应用在后台运行时面板依然保持显示,可以在应用的Info.plist中将LSUIElement字段设为YES,将应用配置为辅助UI模式,不会在Dock显示图标,更符合辅助功能类应用的使用场景。如果你的面板不需要接收鼠标交互(比如纯信息展示),还可以将窗口的ignoresMouseEvents设为true,避免面板拦截下方应用的操作。
参考原型效果:
内容的提问来源于stack exchange,提问作者Corey Farwell
相关产品推荐
相关产品推荐

