0

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

这是正在发生的事情: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
}

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

4

2 回答 2

0

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

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

在此处输入图像描述

然后为您的标签设置宽度约束。

在此处输入图像描述

最后设置约束值需要比您在第一步看到的最宽的可能宽度稍大。

在此处输入图像描述

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

于 2020-02-05T20:00:26.600 回答
0

我最终使字体等宽

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

于 2020-02-10T05:06:33.810 回答