Cocoa touch 带自定义前导字符的UIFont?

Cocoa touch 带自定义前导字符的UIFont?,cocoa-touch,Cocoa Touch,我想使用系统字体,但带有自定义的前导,但UIFont的前导属性是只读的。有没有办法创建具有自定义前导值的系统字体 我试图用UILabel显示多行,但默认的前导太窄。 (\n\n太宽) 如果没有办法,那么我需要创建多个UILabel,但这似乎有点过头了。我想你做不到。UIFont的约束非常严格 如果您自己有换行符,那么自己绘制字符串而不是创建多个UILabel就相当简单了。您可以使用–componentsSeparatedByString:生成子字符串,并使用UIKit NSString addi

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

我试图用UILabel显示多行,但默认的前导太窄。 (\n\n太宽)


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

我想你做不到。UIFont的约束非常严格

如果您自己有换行符,那么自己绘制字符串而不是创建多个UILabel就相当简单了。您可以使用
–componentsSeparatedByString:
生成子字符串,并使用UIKit NSString addition:
–drawAtPoint:with Font:
以指定的前导增量呈现每个子字符串


如果您需要生成自己的包装,这很困难-请参阅。

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

有一种方法可以自定义多行
UILabel
中的行距。不要使用标签的
text
属性,而是使用
attributedText
属性。属性化文本的段落样式可以具有负值
行间距
值,以使行之间的距离更近。以下是一个例子:

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;

不,那是办不到的。除此之外,OS4中的leading已经被弃用,UILabel不是您想要的。UILabel甚至不服从UIFont中的前导。