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;
}
效果如图: