看了很多别人写的NSMutableAttributedString,今天自己把NSMutableAttributedString用法总结一次
创建一个helper帮助类,便于迅速调用 下面是帮助类中的 实现方法
//传入值 labStr文本内容, spacing行距, x y起始点坐标
+ (UILabel *)getLinesSpacing:(NSString *)labStr spacing:(float)spacing withX:(float)x withY:(float)y{
UILabel *cLabel = [UILabelnew];
NSString * cLabelString = labStr;
cLabel.numberOfLines = 0;
NSMutableAttributedString * attributedString = [[NSMutableAttributedStringalloc]initWithString:cLabelString];
//此处只有一个paragraphStyle,每行的间距就一样,可以设置多个,设置成不同的行间距,
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStylealloc]init];
[paragraphStyle setLineSpacing:spacing];
//此处可给不同的属性,不同的值,不同的range或者string 实现不同的效果,如,一行中某个字体颜色不同,
/**
* NSFontAttributeName 设置不同的字体大小
*NSForegroundColorAttributeName 设置不同的字体颜色
*NSParagraphStyleAttributeName 设置不同的行间距
* value 需要给的值
* rangge 这个样式所在label中包含的范围
*/
[attributedString addAttribute:NSParagraphStyleAttributeNamevalue:paragraphStylerange:NSMakeRange(0, [cLabelStringlength])];
[cLabel setAttributedText:attributedString];
[cLabel sizeToFit];
cLabel.lineBreakMode =NSLineBreakByTruncatingTail;
CGSize maximumLabelSize = CGSizeMake(100, 9999);//labelsize的最大值
//关键语句
CGSize expectSize = [cLabel sizeThatFits:maximumLabelSize];
//设置label的宽高
cLabel.frame = CGRectMake(x, y, expectSize.width, expectSize.height);
return cLabel;
}
帮助类中的方法已写好,下面是调用
//行间距10起始点位置 20,74
UILabel *labe = [LabelHelpergetLinesSpacing:@"第一行\n第二行\n第三行"spacing:10withX:20withY:74];
labe.font = [UIFontsystemFontOfSize:16];
[self.viewaddSubview:labe];