【问题标题】:How can I horizontally align my status bar item text?如何水平对齐状态栏项目文本?
【发布时间】:2020-02-05 19:25:46
【问题描述】:

我正在学习 swift,所以我开始使用时钟应用程序。我能够让它工作,但样式不是我所期望的。当时间改变时,整个标题都会发生变化。是否可以防止文本移动?

这是发生了什么:https://imgur.com/A5yj6CI.gif

guard let statusButton = statusBarItem.button else { return }
let formatter = DateFormatter()

let timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { timer in
  formatter.dateFormat = "hh:mm:ss.S"
  let dateTimeString = formatter.string(from: Date())
  statusButton.title = dateTimeString
}

左对齐是解决方案吗?如果没有,有哪些选择?

【问题讨论】:

    标签: swift xcode statusbar menubar statusbaritem


    【解决方案1】:

    如果您的标签没有足够的空间来容纳移位(由于标签值不断变化),左对齐标签将无助于解决您的问题,因此我相信您可以通过设置固定宽度来解决它您的标签的约束。

    首先,您需要将标签设置为最大可能的标签值,即在您的情况下为 99:99:99.9,看看标签宽度的值是多少。

    然后为您的标签设置宽度限制。

    最后设置的约束值需要比你在第一步看到的最宽的宽度略大。

    这样,您的标签将有足够的空间用于移动,而不会改变可能与其有约束关系的其他元素的整体外观。

    【讨论】:

    • 非常感谢您的回复。我听从了您的建议并设置了固定宽度 let statusBarItem: NSStatusItem = NSStatusBar.system.statusItem(withLength: 200) 不幸的是,文本仍在移动。这是一个例子imgur.com/DusVIpr.gif
    • 我明白了。那么如何将标签设置为左对齐呢?上面的约束将有助于解决与空间相关的问题,而文本对齐可能有助于修复标签的左侧位置。 @Leon
    【解决方案2】:

    我最终将字体设为等宽

    statusButton.font = NSFont(name: typeFace, size: 14)

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 2020-11-09
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      相关资源
      最近更新 更多