SuperAPI AI 工具集

macos-notch-ui

通用与其它

查看项目

更新于 10-15 21:41

技能介绍

用途:为 macOS 应用添加 Dynamic Island 风格的刘海区域覆盖 UI,从 MacBook 硬件刘海延伸出一个透明浮层面板。

架构三部分:NotchWindow(NSPanel 子类,无边框透明、穿透点击、位于 CGShieldingWindowLevel,高于菜单栏);NotchShape(SwiftUI Shape,顶部为凹形二次贝塞尔“耳朵”曲线,底部为凸圆角);内容视图(刘海内展示的状态指示、波形、文字、图标等)。

主要能力:通过在最上层放置黑色填充的 NotchShape,视觉上扩展刘海区域,内容看似从硬件刘海“长出”。定位使用 screen.frame(非 visibleFrame)以包含菜单栏区域:x = screen.frame.origin.x + (screen.frame.width - totalWidth) / 2,y = screen.frame.origin.y + screen.frame.height - totalHeight。NotchShape 提供可动画的 topCornerRadius(默认 10)与 bottomCornerRadius(默认 16)。

使用方式:复制 references/NotchShape.swift 与 references/NotchWindow.swift,构建内容视图并裁剪到 NotchShape、填充黑色;一次创建 NotchWindow 后调用 showNotch(content:) 显示、hideNotch() 隐藏。显示采用两步:先 orderFront,再在下一轮 runloop 将 isVisible 置 true,宽度以 .spring(response: 0.35, dampingFraction: 0.75) 从 0 动画到目标宽度。隐藏为三步:先收起展开内容,0.25 秒后 isVisible = false 触发宽度收拢,0.65 秒后 orderOut 移除窗口。

适用场景与限制:适用于需要从刘海区域呈现紧凑信息(如录音指示、状态)的 macOS 应用;无刘海设备(外接显示器、旧款 MacBook)可用 screen.safeAreaInsets.top > 0 检测,回退为底部浮动胶囊并使用 .floating 窗口层级。内容应保持紧凑,单行“图标 + 短文字”效果最佳;黑色填充以融合硬件刘海;动画宽度而非透明度。资料未提供额外收费、平台兼容范围或依赖版本信息。