0

我正在使用UIBarButtonItem时钟的标题部分。每次秒变化时,时钟都会根据秒部分的字符大小稍微向左/向右移动。

是否可以将标题文本左对齐或以某种方式使标题保持固定?

最佳:

@IBOutlet weak var RefreshButton: UIBarButtonItem!

在 ViewDidLoad 下:

let font = UIFont.systemFont(ofSize: 14)
    RefreshButton.setTitleTextAttributes([NSAttributedString.Key.font: font], for: UIControl.State.normal)
    RefreshButton.tintColor = UIColor.black

Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ClockUTC), userInfo: nil, repeats: true)

目的:

@objc func ClockUTC(timer: Timer)
{

    let time = Date()
    let timeFormatter = DateFormatter()
    timeFormatter.dateFormat = "HH:mm:ss"
    timeFormatter.timeZone = TimeZone(abbreviation: "UTC")
    let stringDate = timeFormatter.string(from: time)
    RefreshButton.title = "UTC \(stringDate)"
}

预习:

在此处输入图像描述

4

2 回答 2

1

尝试像这样设置等宽字体:

let font = UIFont.monospacedDigitSystemFont(ofSize: 14, weight: .bold)

如果您想要常规、浅色或半粗体字体,只需将 .bold 更改为 .semibold 或 .regular 或 .light

于 2020-04-28T09:01:28.753 回答
0

我认为您可以尝试将 UIBarButtonItem 与 customView 一起使用:

    let label = UILabel(frame: CGRect.zero)
    label.text = "10:20:44"
    label.textAlignment = .left
    label.sizeToFit()
    //If sizeToFit() not give you the right size, then you should calculate the size of the label based on the text.
    let button = UIBarButtonItem(customView: label)

关于计算标签尺寸,您可以试试这个链接

于 2020-04-28T08:11:53.910 回答