我想使用系统字体,但带有自定义前导,但UIFont的前导属性是只读的。有没有办法创建一个具有自定义前导值的系统字体?
I am trying to display multiple lines with a UILabel, but the default leading is too narrow. ( is too wide)
如果没有办法,那么我需要创建多个UILabels,但这似乎有点过头了。
我想使用系统字体,但带有自定义前导,但UIFont的前导属性是只读的。有没有办法创建一个具有自定义前导值的系统字体?
I am trying to display multiple lines with a UILabel, but the default leading is too narrow. ( is too wide)
如果没有办法,那么我需要创建多个UILabels,但这似乎有点过头了。
我认为你不能那样做。UIFont受到了相当严格的约束。
如果您自己有换行符,那么自己绘制字符串而不是创建多个UILabels是相当简单的。您可以使用–componentsSeparatedByString:
生成子字符串,并使用UIKit NSString addition:-drawAtPoint:withFont:
如果您需要生成自己的包装,这很困难-请参阅这个相关的问题。
有一种方法可以自定义多行<code>UILabel</code>中的行间距。不要使用标签的text
属性,而是使用attributedText
特性。属性文本的段落样式可以为负值lineSpacing
,以使行之间的距离更近。以下是一个示例:
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = -4;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:yourStringHere];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, titleText.length)];
yourUILabel.attributedText = attributedString;
这可以通过在UIFont上装箱一个自定义类别并用自定义setter替换提货属性来完成。我仍在努力做到这一点。