美文网首页
iOS - UILabel Attributed

iOS - UILabel Attributed

作者: Mili苗 | 来源:发表于2017-05-12 15:03 被阅读61次

本文主要介绍:文字适应UILabel,UILabel适应文字

* 文字适应UILabel

文字大小根据UILabel的尺寸缩放

  // 设置文字自适应
  _label.adjustsFontSizeToFitWidth = YES;
  // UIBaselineAdjustmentAlignBaselines 居下
  // UIBaselineAdjustmentAlignCenters 居中
  // UIBaselineAdjustmentNone 居上
  _label.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 

* UILabel适应文字

需要UILabel适应文字,在宽度一定的时候,那就需要计算文字的高度,计算文字高度的方法有以下几种:

1.此方法适合一行的文字计算,如果行数越多,由于换行时可能会有一个文字显示不下的空隙,导致计算值不准确。如本图所示,高度计算偏小。

CGSize size = [text boundingRectWithSize:CGSizeMake(_textLab.frame.size.width, CGFLOAT_MAX)
                                    options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                 attributes:@{NSFontAttributeName:_textLab.font}
                                    context:nil].size;
一段文字

2.当有文字分段的时候,因为换行产生的占位符,上面的方法就不能准确计算出文字高度了,这就需要下面的方法

textLab.text = text;
_tHeight = [_textLab sizeThatFits:CGSizeMake(_textLab.frame.size.width, MAXFLOAT)].height;
分段文字

3.当有文字分段的时候,并且还需要对段落的文字样式做不同定制的时候,这就需要下面的方法

// 第一种样式
NSMutableParagraphStyle *paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
paragraphStyle1.lineSpacing = 2; //增加行高
//paragraphStyle1.paragraphSpacing = 10;  //段落后面的间距
NSMutableAttributedString *showStr = [[NSMutableAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:_textLab.font,NSParagraphStyleAttributeName:paragraphStyle1.copy,NSBackgroundColorAttributeName:_textLab.backgroundColor}];
// 第二种样式    
NSMutableParagraphStyle *paragraphStyle2 = [[NSMutableParagraphStyle alloc] init];
paragraphStyle2.lineSpacing = 2;
[showStr appendAttributedString:[[NSAttributedString alloc] initWithString:dText attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10.0],NSParagraphStyleAttributeName:paragraphStyle2.copy,NSBackgroundColorAttributeName:_textLab.backgroundColor,NSForegroundColorAttributeName:[UIColor redColor]}]];
_textLab.attributedText = showStr;
_tHeight = [_textLab sizeThatFits:CGSizeMake(_textLab.frame.size.width, MAXFLOAT)].height;
样式不同分段文字
高度计算正确后,将UILabel的布局更新下就完成了。
源代码地址:Demo

相关文章

网友评论

      本文标题:iOS - UILabel Attributed

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