iOS - UILabel Attributed

本文主要介绍:文字适应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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 3月21日,我的一天之魔鬼训练(3)。 今天是星期二,每天一次的训练又开始了。我先按照老爸给我的计划,先慢跑三圈,...
    Sernedipity阅读 2,540评论 0 0
  • 前几天做微商的网友频频在朋友圈发布一款唇膏的营销广告,精美的造型,良好的品质,闪亮的色泽,通过...
    月下潇歌阅读 1,778评论 0 0
  • 今夜我独眠 没有理想中的惬意 只留寂寞里的空虚
    如何_c7ba阅读 1,477评论 0 0
  • Part 2 Writing 2.1 Summarize written text 简写段落 2.2 Write ...
    什锦饭阅读 2,967评论 0 0
  • 数据--->结果 要求:将右边的表格转换成左边的表格。就是一维表转二维表。 思路: 1、先声明一个足够大的数组,用...
    叶知行阅读 5,395评论 0 1

友情链接更多精彩内容