【发布时间】:2015-11-24 07:10:43
【问题描述】:
具有自定义 lineSpacing 属性的多行 UILabel 是否应该包含该行间距,即使标签的文本适合一行?
这是我的标签:
let label = UILabel()
label.numberOfLines = 4
var paragraph = NSMutableParagraphStyle()
paragraph.lineSpacing = 5
paragraph.lineBreakMode = .ByTruncatingTail
label.attributedText = NSAttributedString(string: "Some short text", attributes: [NSParagraphStyleAttributeName: paragraph])
这是它的布局方式。请注意文本下方的额外间距。
比较:
奇怪的是缺乏一致性。当标签延伸到第二行时,底线不再包含这个额外的间距:
当只有一行文本时,有没有办法去除这个行距?或者其他一些强制一致性的方法,以便我至少可以解释它?
更新
基线计算似乎也被破坏了。当尝试将视图(此处为红色框)与标签的基线对齐时,多行标签会被部分覆盖。
【问题讨论】:
-
您使用的是自定义字体吗?
-
@larsacus 是的,我是。具体来说,各种 Gotham 变体。
-
你试过用系统字体做同样的测试吗?
-
FWIW 我已经验证即使使用系统字体也会发生这种情况。只要 UILabel 中的属性只要文本属性在字符串中的某处发生变化,就会发生这种情况。
标签: ios autolayout uilabel nsattributedstring