美文网首页
设置label的 行高 和 行间距

设置label的 行高 和 行间距

作者: hncjliyingjie | 来源:发表于2018-04-08 09:48 被阅读34次
NSMutableParagraphStyle *muStyle = [[NSMutableParagraphStyle alloc]init];
muStyle.lineSpacing = 10;//设置行间距离
muStyle.alignment = NSTextAlignmentLeft;//对齐方式
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:model.mContent];
[attrString addAttribute:NSFontAttributeName value: H15 range:NSMakeRange(0, attrString.length)];
[attrString addAttribute:NSParagraphStyleAttributeName value:muStyle range:NSMakeRange(0, attrString.length)];
self.titleLabel.attributedText = attrString;

然后看下效果图:


1523151724425.jpg

红色区域是默认绘制单行文本会占用的区域,可以看到文字的上下是有一些留白的(蓝色和红色重叠的部分)。设计师是想要蓝色区域高度为 10pt,而我们直接设置 lineSpacing 会将两行红色区域中间的绿色区域高度设置为 10pt,这就是问题的根源了。

那么这个红色的区域高度是多少呢?答案是 label.font.lineHeight,它是使用指定字体绘制单行文本的原始行高。

知道了原因后问题就好解决了,我们需要在设置 lineSpacing 时,减去这个系统的自带边距:

NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.lineSpacing = 10 - (label.font.lineHeight - label.font.pointSize);
NSMutableDictionary *attributes = [NSMutableDictionary dictionary];
[attributes setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
label.attributedText = [[NSAttributedString alloc] initWithString:label.text attributes:attributes];

这次再看效果图,就跟设计图一样了。


640.png

相关文章

网友评论

      本文标题:设置label的 行高 和 行间距

      本文链接:https://www.haomeiwen.com/subject/oqhphftx.html