Label设置行间距,段间距,字间距
- 使用NSMutableAttributedString设置label属性
直接上代码
- (void)viewDidLoad {
[super viewDidLoad];
NSString *text = @"突然想要写点什么,来纪念自己即将逝去的大学四年时光,借机过度一下自己此时此刻莫可名状的心情;\n突然想要说点什么,来缅怀一下自己当初万丈豪情遗失的时光和所谓的青春年华。\n不知道是骨子里的性情使然,\n还是内心深处想要特意地煽情?";
UIFont *font = [UIFont systemFontOfSize:14.f];
CGFloat lineSpace = 5.f;
CGFloat paragraphSpacing = 10.f;
CGSize labelSize = CGSizeMake([UIScreen mainScreen].bounds.size.width - 20, 0);
NSNumber *textLengthSpace = @1.5;
NSDictionary *dict = [self setTextLineSpaceWithString:text withLineBreakMode:(NSLineBreakByCharWrapping) withAlignment:NSTextAlignmentLeft withFont:font withLineSpace:lineSpace withTextlengthSpace:textLengthSpace andParagraphSpaceing:paragraphSpacing];
CGFloat height = [self getSpaceLabelHeight:text textSize:labelSize withLineBreakMode:(NSLineBreakByCharWrapping) withAlignment:(NSTextAlignmentLeft) withFont:font withLineSpace:lineSpace withTextlengthSpace:textLengthSpace andParagraphSpaceing:paragraphSpacing];
UILabel *label = [[UILabel alloc] init];
label.numberOfLines = 0;
label.frame = CGRectMake(10, 50, labelSize.width, height);
label.attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:dict];
[self.view addSubview:label];
}
/**
设置label字体, 行间距, 字间距, 段间距
@param string label上文字
@param lineBreakMode 每行容纳字符的宽度
@param alignment 对齐方式
@param font 字体大小
@param lineSpace 行间距
@param textlengthSpace 字间距
@param paragraphSpacing 段间距
@return 存放属性的字典
*/
- (NSDictionary *)setTextLineSpaceWithString:(NSString *)string withLineBreakMode:(NSLineBreakMode)lineBreakMode withAlignment:(NSTextAlignment)alignment withFont:(UIFont *)font withLineSpace:(CGFloat)lineSpace withTextlengthSpace:(NSNumber *)textlengthSpace andParagraphSpaceing:(CGFloat)paragraphSpacing {
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineBreakMode = lineBreakMode;
style.alignment = alignment;
style.lineSpacing = lineSpace;
style.hyphenationFactor = 1.0f;
style.firstLineHeadIndent = 30.0f;
style.paragraphSpacing = paragraphSpacing;
style.paragraphSpacingBefore = 0.0f;
style.headIndent = 0.0f;
style.tailIndent = 0.0f;
NSDictionary *dict = @{NSFontAttributeName : font,
NSParagraphStyleAttributeName : style,
NSKernAttributeName : textlengthSpace,
};
return dict;
}
- (CGFloat)getSpaceLabelHeight:(NSString *)string textSize:(CGSize)textSize withLineBreakMode:(NSLineBreakMode)lineBreakMode withAlignment:(NSTextAlignment)alignment withFont:(UIFont *)font withLineSpace:(CGFloat)lineSpace withTextlengthSpace:(NSNumber *)textlengthSpace andParagraphSpaceing:(CGFloat)paragraphSpacing {
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineBreakMode = lineBreakMode;
style.alignment = alignment;
style.lineSpacing = lineSpace;
style.paragraphSpacing = paragraphSpacing;
style.hyphenationFactor = 1.0;
style.firstLineHeadIndent = 30.0;
style.paragraphSpacingBefore = 0.0;
style.headIndent = 0;
style.tailIndent = 0;
NSDictionary *dic = @{NSFontAttributeName:font,
NSParagraphStyleAttributeName:style,
NSKernAttributeName:textlengthSpace
};
CGSize size = [string boundingRectWithSize:textSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
return size.height;
}
效果如图:
![这里写图片描述](https://img-blog.csdn.net/20170711111927046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRW11bGF0ZVN0ZXA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)