设置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