ios - 设置 UILabel 行距

如何修改多行 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/

相关文章:

ios - 如何让 UILabel 显示轮廓文本?

ios - 快速创建和播放声音

ios - UICollectionView 当前可见单元格索引

ios - UIAlertView 首先弃用 IOS 9

objective-c - iOS8 - 约束含糊地暗示高度为零

ios - UICollectionViewCell 上的长按手势

objective-c - iOS 7.0.3 上的 "HelveticaNeue-Italic"发

ios - 带有透明孔的 CALayer

ios - 如何将度数转换为弧度?

ios - 对 UITableView 使用 didSelectRowAtIndexPath 或 p