设置UILabel行间距

如何修改多行UILabel行间距(行间距)?


编辑:很明显NSAttributedString会在iOS 6及更高版本上完成它。 不是使用NSString来设置标签的文本, NSAttributedString创建一个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的昔日属性StringWithString做了同样的事情,但现在已被弃用。

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

简答:你不能。 要改变文本行之间的间距,你必须UILabel子类,并滚动你自己的drawTextInRect ,创建多个标签,或者使用不同的字体(可能是为特定行高编辑的一种,请参阅Phillipe的答案)。

漫长的回答:在印刷和网络世界中,文本行之间的空间被称为“领先”(与“标题”交替,并且来自几十年前使用的铅金属)。 Leading是UIFont的只读属性,它在4.0中被弃用,并被lineHeight取代。 据我所知,没有办法创建一个具有特定参数集的字体,如lineHeight ; 您可以获得系统字体和您添加的任何自定义字体,但安装后无法调整它们。

UILabel也没有间距参数。

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

我希望UILabel有更大的灵活性,我很乐意被证明是错误的!


从ios 6开始,你可以在UILabel中设置一个属性字符串:

NSString *labelText = @"some text"; 
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:40];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
cell.label.attributedText = attributedString ;

您可以控制故事板中的行距:

重复的问题

链接地址: http://www.djcxy.com/p/81905.html

上一篇: Set UILabel line spacing

下一篇: What should I set JAVA