我有 3 个 UILabels
,我想为它们设置相同的字体(所有 3 种可能性中最小的一个)。问题是什么?我不知道如何检查当前字体 - 每个 UILabels
使用 Autoshrink
,最小字体比例和行数等于 0。UILabels 的文本设置在 ViewDidLoad()
方法(可能的标签文本有多种组合)。
我尝试使用 UILabel.font.pointSize
属性(在 viewDidAppear()
方法中调用)获取当前字体大小,然后比较它们。问题是 UILabel.font.pointSize
返回的不是 UILabel 文本字体大小的当前值(在 Autoshrink
完成后),而是返回 Storyboard中设置的值。
我完全没有想法,所以感谢您的帮助!
你好,约翰
最佳答案
使用这个扩展
extension String {
func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
return ceil(boundingBox.height)
}
}
获取高度
height = strDesc.height(withConstrainedWidth: UIScreen.main.bounds.size.width - 160, font: UIFont.systemFont(ofSize: 14.0))
关于ios - 如何检查 UILabel 的当前字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52929271/