You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS状态栏计时器文本与时间日期垂直对齐异常问题求助

macOS状态栏计时器文本垂直对齐问题

我正在尝试将状态栏中的计时器文本(截图中的“0:00”)与macOS状态栏的时间日期项垂直对齐。测试发现:

  • 内置显示器(白色字体):需要设置baselineOffset: 0.5才能与时间日期对齐
  • 外接显示器(黑色字体):无需设置偏移量即可对齐

但当屏幕焦点切换至非活跃状态(点击其他屏幕切换焦点)时,对齐状态会发生变化,且内置与外接显示器的变化方向相反。已在27英寸4K显示器和14英寸MBP的不同分辨率下测试,结果一致。

TLDR 对齐情况汇总

屏幕活跃状态下的垂直偏移(不同baselineOffset值)

显示器类型baselineOffset = 0baselineOffset = 0.5
内置显示器偏低正常
外接显示器正常偏高

baselineOffset = 0时,不同焦点状态的垂直偏移

显示器类型屏幕活跃状态屏幕非活跃状态
内置显示器偏低正常
外接显示器正常偏低

相关截图说明

  • baselineOffset 开启 vs 关闭:白色为内置显示器效果,黑色为外接显示器效果
  • 活跃状态 vs 非活跃状态屏幕:白色为内置显示器效果,黑色为外接显示器效果

代码片段

class AppDelegate: NSObject, NSApplicationDelegate {
    private var statusItem: NSStatusItem!

// ...
 
    private func updateStatusBar() {
        guard let button = statusItem.button else { return }
        
        let title = "0:00"
        
        DispatchQueue.main.async {
            let attributes: [NSAttributedString.Key: Any] = [
                .font: NSFont.systemFont(ofSize: NSFont.systemFontSize, weight: .regular),
                .foregroundColor: NSColor.textColor,
                .baselineOffset: 0.5
            ]
            
            let attributedTitle = NSAttributedString(string: title, attributes: attributes)
            button.attributedTitle = attributedTitle
        }
    }

// ...

}
 
@main
class App {
    static func main() {
        let app = NSApplication.shared
        let delegate = AppDelegate()
        app.delegate = delegate
        app.run()
    }
}

内容的提问来源于stack exchange,提问作者raphinzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:40:53