从零开始写一个菜单栏 App
MenuBarExtra 是那种 API 表面干净、运行时却有点闹鬼的 SwiftUI
新成员。Promptory 的菜单栏入口形状,在三次重写之后才定下来。
三次重写
- 纯
MenuBarExtra窗口——首次绘制卡顿,因为窗口是惰性创建的, 内容又是无边界的 SwiftUI。 NSStatusBar+ 手写NSPanel——很快,但每个键盘交互都要 手工胶水拼接。MenuBarExtra+ 一个轻量预热的 body——最终上架的那个版本。
这篇手记将会展开:预热技巧(App 启动时挂载一个隐藏视图)、用 Carbon 注册全局热键(对,至今如此),以及如何做一个可聚焦、可搜索、关闭后 把焦点还给用户原本所在窗口的面板。