如何修改多行 UILabel
中的行间距(行间距)?
最佳答案
编辑:显然 NSAttributedString
会在 iOS 6 及更高版本上做到这一点。而不是使用 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 的旧的 attributesStringWithString 做了同样的事情,但现在 已被弃用。
由于历史原因,这是我原来的答案:
简答:你不能。要更改文本行之间的间距,您必须继承 UILabel
并滚动您自己的 drawTextInRect
、创建多个标签或使用不同的字体(可能为具体的行高,见菲利普的回答)。
长答案:在打印和在线世界中,文本行之间的空间被称为“领先”(与“标题”押韵,来自几十年前使用的铅金属)。前导是 UIFont
的只读属性,在 4.0 中已弃用并由 lineHeight
取代。据我所知,没有办法创建具有特定参数集的字体,例如 lineHeight
;您可以获得系统字体和您添加的任何自定义字体,但一旦安装就无法调整它们。
UILabel
中也没有间距参数。
我对 UILabel
的行为不是特别满意,所以我建议编写您自己的子类或使用第 3 方库。这将使行为独立于您的字体选择,并成为最可重用的解决方案。
我希望 UILabel
有更多的灵 active ,我很高兴被证明是错误的!
https://stackoverflow.com/questions/3880526/