UIFont有自定义领先?

时间:2009-03-23 14:23:28

标签: cocoa-touch

我想使用系统字体,但使用自定义前导,但UIFont的主要属性是readonly。有没有办法创建具有自定义前导值的系统字体?

我正在尝试使用UILabel显示多行,但默认行距太窄。 (\ n \ n太宽了)

如果没有办法,那么我需要创建多个UILabel,但这似乎有点矫枉过正。

3 个答案:

答案 0 :(得分:2)

我认为你做不到。 UIFont受到严格限制。

如果您自己拥有换行符,那么自己绘制字符串而不是创建多个UILabel是相当简单的。您可以使用– componentsSeparatedByString:生成子字符串,并使用添加的UIKit NSString以指定的前导增量渲染每个子字符串:– drawAtPoint:withFont:

如果您需要生成自己的包装,则很难 - 请参阅this related question

答案 1 :(得分:1)

有一种方法可以在多行UILabel中自定义行间距。请使用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;

答案 2 :(得分:-2)

可以通过在UIFont上创建自定义类别并使用自定义setter替换装载属性来完成。我仍在尝试这样做。