如何在多行UILabel中修改行之间的间距(行间距)?

最佳答案

编辑:显然,在iOS 6和更高版本上,NSAttributedString将做到这一点。不要使用NSString设置标签的文本,而是创建NSAttributedString,在标签上设置属性,然后将其设置为标签上的.attributedText。您想要的代码将如下所示:

NSMutableAttributedString* attrString = [[NSMutableAttributedString  alloc] initWithString:@"Sample text"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:24];
[attrString addAttribute:NSParagraphStyleAttributeName
    value:style
    range:NSMakeRange(0, strLength)];
uiLabel.attributedText = attrString;

NSAttributedString的旧attributedStringWithString做了同样的事情,但现在已不建议使用。

由于历史原因,这是我的原始答案:

简短答案:您不能。要更改文本行之间的间距,您将必须将UILabel子类化,并滚动自己的drawTextInRect,创建多个标签,或使用其他字体(也许已针对特定的行高对其进行了编辑,请参见Phillipe的答案)。

长答案:在打印和在线世界中,文本行之间的间隔被称为“前导”(带有“标题”的韵母,来自几十年前使用的铅金属)。 Leading是UIFont的只读属性,该属性在4.0中已弃用,并由lineHeight取代。据我所知,尚无法使用一组特定的参数(例如lineHeight)创建字体。您可以获得系统字体和添加的任何自定义字体,但是一旦安装就无法对其进行调整。
UILabel中也没有间距参数。

我对UILabel的行为并不特别满意,因此建议您编写自己的子类或使用3rd-party库。这将使行为独立于您的字体选择,并成为最可重用的解决方案。

我希望UILabel具有更多的灵活性,并且很高兴能被证明是错误的!

关于ios - 设置UILabel行距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3880526/

10-10 09:18
查看更多