我有一个自定义视图,在这个视图的顶部我有一个UILabel。标签位于视图的中间。标签显示当前速度。整数部分的标签文本大小大于小数部分的文本大小。我在标签文字的两个部分都使用了monospacedDigitFont
,以防止文字在数字发生变化时摇动/移动,NSMutableAttributedString
能够设置不同大小的标签文字。显然它不起作用。
自定义视图:
代码片段
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
}
我做错了什么?
答案 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
}