UILabel設(shè)置富文本行高:
UI標(biāo)注多是以2倍為標(biāo)準(zhǔn),如果2倍下行高是48,1倍行高就是24,24-字號就是代碼中l(wèi)ineSpacing的值
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:(lineSpacing-(label.font.lineHeight - label.font.pointSize))];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
label.attributedText = attributedString;
paragraphStyle的lineSpacing是指第一行文字與第二行文字的行間距(這個(gè)行間距包括文字的留白區(qū)域),如果直接設(shè)置:
[paragraphStyle setLineSpacing:lineSpacing];
實(shí)際行高是大于UI的行高的,所以需要減去自帶的留白,重新設(shè)置行間距(完整代碼如上)。
之所以會大于UI要求的行高,原因如下:

image.png
具體解釋與說明請參考:
iOS行距與行高