【发布时间】:2018-07-26 10:47:54
【问题描述】:
如果我使用具有自定义kern 和lineSpacing 的NSAttributedString,我的UILabel 高度错误。
这是我设置自定义字距和行距的方法:
override func viewDidLoad() {
super.viewDidLoad()
let shortText = "Single line"
self.label.attributedText = self.getAttributedText(text: shortText, kern: 0.2, lineSpacing: 8)
self.label2.attributedText = self.getAttributedText(text: shortText, kern: 0, lineSpacing: 8)
}
private func getAttributedText(text: String, kern: CGFloat, lineSpacing: CGFloat) -> NSAttributedString {
let attributedString = NSMutableAttributedString(string: text)
let style = NSMutableParagraphStyle()
style.lineSpacing = lineSpacing
let attributes: [NSAttributedStringKey : Any] =
[.paragraphStyle : style,
.kern: kern]
attributedString.addAttributes(attributes,
range: NSMakeRange(0, attributedString.length))
return attributedString
}
这是我得到的:
第一个标签(具有自定义字距的标签)的高度错误。它比应有的高度正好高 8 点 - 这是我正在使用的自定义行高。
这只发生在单行标签上。如果我使用几行上的文本,它会按预期工作。
【问题讨论】:
-
.kern似乎与其他 attirbutes 行为不端:stackoverflow.com/questions/46172079/… -
好收获@MilanNosáľ
标签: ios uikit uilabel nsattributedstring kerning