gpt4 book ai didi

ios - 如何调整字体大小以适应 UILabel 的高度和宽度

转载 作者:搜寻专家 更新时间:2023-10-30 22:19:22 24 4
gpt4 key购买 nike

我有一个正方形 UILabel(黄色),其中包含一个字母。

enter image description here

我使用了来自 this SO answer 的以下代码调整字体大小,使其适合 UILabel:

letterLabel.font = UIFont(name: letterLabel.font.fontName, size: 100)
letterLabel.adjustsFontSizeToFitWidth = true
letterLabel.textAlignment = NSTextAlignment.Center

如屏幕截图所示,字体大小取决于宽度。但由于文字只有一个字母,因此我们还需要看高度。我们如何调整字体大小,使高度也在 UILabel 范围内?

最佳答案

我没有找到任何简单的解决方案,所以我做了这个扩展:

extension UILabel {
func setFontSizeToFill() {
let frameSize = self.bounds.size
guard frameSize.height>0 && frameSize.width>0 && self.text != nil else {return}

var fontPoints = self.font.pointSize
var fontSize = self.text!.size(withAttributes: [NSAttributedStringKey.font: self.font.withSize(fontPoints)])
var increment = CGFloat(0)

if fontSize.width > frameSize.width || fontSize.height > frameSize.height {
increment = -1
} else {
increment = 1
}

while true {
fontSize = self.text!.size(withAttributes: [NSAttributedStringKey.font: self.font.withSize(fontPoints+increment)])
if increment < 0 {
if fontSize.width < frameSize.width && fontSize.height < frameSize.height {
fontPoints += increment
break
}
} else {
if fontSize.width > frameSize.width || fontSize.height > frameSize.height {
break
}
}
fontPoints += increment
}

self.font = self.font.withSize(fontPoints)
}
}

关于ios - 如何调整字体大小以适应 UILabel 的高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34952664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com