更改文本时,UILabel中使用等宽字体的奇怪行为

时间:2018-02-21 12:59:04

标签: ios swift uilabel uislider monospace

使用monospacedDigitSystemFont(ofSize:weight:)

时出现了一个奇怪的问题

我的UISlider中有一个UILabel和一个UIViewController。 Label显示滑块的当前值+一些描述文本。更改滑块的值时,myLabel的文字会左右摇晃一下。我希望myLabel的文字不会左右摇晃,因为我使用的是monospacedDigitSystemFont(ofSize:weight:)

这是我的代码:

import UIKit

class ExampleViewController: UIViewController {
    @IBOutlet weak var myLabel: UILabel!
    @IBOutlet weak var mySlider: UISlider!

    override func viewDidLoad() {
        super.viewDidLoad()
        myLabel.font = UIFont.monospacedDigitSystemFont(ofSize: 15, weight: .bold)
    }

    @IBAction func sliderChanged(_ sender: UISlider) {
        myLabel.text = String(format: "%.5f is the actual Value of the Slider", sender.value)
    }
}

关于摇晃的GIF:

jiggling monospaced text

有什么建议吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

这是一个可怕的错误,它是由等宽字体粗体引起的。将重量设置为常规可以解决此问题。

myLabel.font = UIFont.monospacedDigitSystemFont(ofSize: 15, weight: .regular)

如果您仍想使用粗体字体,请考虑使用非标准的等宽字体。