我有两个名为 headingLabel 和 descriptionLabel 的 UILabel,它们的行数分别为 3 和 5。现在我希望文本的字体大小发生变化并适合 numberOfLines,其中文本根据收到的一些网络 json 数据而变化。
here is my code
let headingLabel : UILabel = {
let hl = UILabel()
hl.translatesAutoresizingMaskIntoConstraints = false
hl.text = "Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor"
hl.textColor = .black
hl.lineBreakMode = NSLineBreakMode.byWordWrapping
hl.numberOfLines = 3;
hl.sizeToFit()
hl.clipsToBounds = true
hl.font = hl.font.withSize(20)
return hl
}()
let descriptionLabel : UILabel = {
let dl = UILabel()
dl.translatesAutoresizingMaskIntoConstraints = false
dl.text = "Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolorLorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor sit amet amet Lorem ipsum dolor"
dl.textColor = .black
dl.lineBreakMode = NSLineBreakMode.byWordWrapping
dl.numberOfLines = 5
dl.font = dl.font.withSize(18)
dl.sizeToFit()
dl.clipsToBounds = true
dl.alpha = 0.8
return dl
}()
最佳答案
使用 Autoshrink 将文本调整到标签框架中。
Authoshrink 最小字号
Authoshrink with Minimum Font Scale
有关 UILabel 的 Apple 文档 - Autoshrink
确定标签是否在求助于截断之前调整文本的外观。选择最小字体比例并输入一个值以允许标签缩小字体大小以适合文本。启用 Tighten Letter Spacing 以允许标签减少字符间距。在运行时分别使用 minimumScaleFactor 和 allowsDefaultTighteningForTruncation 属性访问这些值。
关于ios - 如何以编程方式设置字体大小以适应 swift 4 中的行数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50623966/