【问题标题】:How can I vertically align my status bar item text?如何垂直对齐状态栏项目文本?
【发布时间】:2016-10-05 02:49:32
【问题描述】:

图片左边一个是苹果的日期和时间,一个是我的应用程序。正如您所见,我的应用程序的文本看起来比 Apple 的要低。哪个看起来不漂亮。如何解决?

self.statusBarItem.image                    = nil
self.statusBarItem.button?.imagePosition    = .NoImage
self.statusBarItem.button?.title            = "Sun 5 Jun  13:35"

【问题讨论】:

  • 我没有使用约束。您看到的代码是我使用的代码,除了顶部的'let statusBarItem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)'
  • 我能够与以下代码对齐:“button.frame = CGRectMake(0.0, 0.5, button.frame.width, button.frame.height)” 手动更正偏移量,但也许有人有更好的解释。
  • @Mark 你能把代码分享到 GitHub 或类似的地方,以便我看看吗?
  • 或者为什么不嵌入导航控制器?
  • 所有都不起作用,因为它需要在状态项按钮上完成。偏移量对我来说实际上是一个足够好的工作。很抱歉给大家添麻烦了。我正在尝试删除问题,但尚未成功。

标签: swift macos statusbar nsbutton nsstatusitem


【解决方案1】:

你可以在偏移量中做到这一点。您不能这样做,因为它需要在状态项按钮栏上完成。

button.frame = CGRectMake(0.0, 0.5, button.frame.width, button.frame.height)

【讨论】:

    【解决方案2】:

    我想对此进行快速补充。虽然接受的答案确实根据问题的上下文起作用。如果您有图像,它将不起作用,因为这会移动所有内容(图像和文本)。我发现由于某种原因,图像是垂直居中的,但文字不是。

    在这种情况下您真正想要做的是设置NSAttributedString.Key.baselineOffset,您可以在其中按如下方式得出基线值

        var displayScale: CGFloat = 1.0
        let pstyle = NSMutableParagraphStyle()
        pstyle.alignment = .center;
        let aStr = NSAttributedString(string: str, attributes: [NSAttributedString.Key.paragraphStyle: pstyle, NSAttributedString.Key.font: font])
        if let main = NSScreen.main {
            displayScale = main.backingScaleFactor
            if displayScale <= 0.0 {
                displayScale = 1.0
            }
        }
        let textHeight = aStr.size().height
        baselineOffset = ((font.ascender - font.descender) - textHeight) / displayScale
        button.attributedTitle =  = NSAttributedString(string: str, attributes: [NSAttributedString.Key.paragraphStyle: pstyle, NSAttributedString.Key.baselineOffset: baselineOffset, NSAttributedString.Key.font: font])
    

    这里的免责声明是我不完全确定displayScale 部分。我认为这是校正像素/点所必需的。

    我只添加了这个答案,因为我一直在努力寻找一个好的答案。基于此,我得到了这样做的灵感:Center two fonts with different different sizes vertically in an NSAttributedString

    如果这项技术有问题,我很想知道,以便我可以修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 2011-06-22
      • 1970-01-01
      • 2016-07-17
      相关资源
      最近更新 更多