UIBarButtonItem Tittle выравнивание текста - PullRequest
0 голосов
/ 28 апреля 2020

Я использую 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)"
}

Предварительный просмотр:

enter image description here

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Попробуйте установить моноширинный шрифт следующим образом:

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

, если вы хотите обычный, светлый или полужирный шрифт, просто измените. Полужирный на .semibold или .regular или .light

1 голос
/ 28 апреля 2020

Я думаю, что вы можете попробовать использовать 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)

О расчете размера этикетки вы можете попробовать эту ссылку .

...