iOS阻止UILabel发送文字'摇晃'当数字改变时

时间:2017-03-20 15:03:31

标签: ios swift3 uilabel

我有一个自定义视图,在这个视图的顶部我有一个UILabel。标签位于视图的中间。标签显示当前速度。整数部分的标签文本大小大于小数部分的文本大小。我在标签文字的两个部分都使用了monospacedDigitFont,以防止文字在数字发生变化时摇动/移动,NSMutableAttributedString能够设置不同大小的标签文字。显然它不起作用。

自定义视图:

enter image description here

代码片段

func updateSpeed(){
        dummySpeed += 4.0

        speedometerView.currentSpeed = speedometerView.setSmoothSpeed(SpdAv: dummySpeed)

        let myString = String(Float(round(speedometerView.currentSpeed * 10) / 10))
        let attrString = NSMutableAttributedString(string: myString as String)
        attrString.addAttribute(NSFontAttributeName, value: currentSpeedLabel.font.monospacedDigitFont, range: NSMakeRange(0, 1))
        attrString.addAttribute(NSFontAttributeName, value: currentSpeedLabel.font.monospacedDigitFont.withSize(20), range: NSMakeRange(2, 1))

        currentSpeedLabel.attributedText = attrString
    }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果你是iOS的新手,那就不那么容易了。 这是一个解决方案:

@IBOutlet weak var currentSpeedLabel: UILabel! {
        didSet{
            currentSpeedLabel.font = UIFont.monospacedDigitSystemFont(
                ofSize: UIFont.systemFontSize * 2,
                weight: UIFontWeightRegular)
        }
    }

func updateSpeed(){
        dummySpeed += 4.0

        speedometerView.currentSpeed = speedometerView.setSmoothSpeed(SpdAv: dummySpeed)

        let myString = String(Float(round(speedometerView.currentSpeed * 10) / 10))
        let attrString = NSMutableAttributedString(string: myString as String)
        attrString.addAttribute(NSFontAttributeName, value: UIFont.monospacedDigitSystemFont(
            ofSize: UIFont.systemFontSize,
            weight: UIFontWeightRegular), range: NSMakeRange(attrString.length - 1, 1))

        currentSpeedLabel.attributedText = attrString
    }