前言
UILabel 是的使用频率是非常频繁,当文字较多的时候,会显得密密麻麻的,不利于UI显示及用户观看。通常我们需要对 Label 中“行间距”或“文字间距”进行调整,从而使文字没那么紧密,提高用户体验。
当调整“行间距”或“字间距”后,很多时候需要对Label进行高度自适应,此时会出现高度计算错误的问题,所以我们需要对“富文字”高度进行计算。计算结束后,经测试发现:当文字为1行并且全部文字为“中文”时,高度计算不准确,最后对该问题进行处理。
综上所述:分为以下三步进行设置“UILabel 内容的间距及高度的计算”
1. 通过使用 UILbael 的分类实现修改间距的功能。
2 .使用两种方法来计算:“富文字”的高度。
3. 对“高度计算结果”特殊情况进行处理。
一.设置 Label “行间距”或“字间距”
设置思路
普通的 NSString 文字,不能调整字体“行间距”或“字间距”,但
NSAttributedString 富文字,可以调整该间距,所以我们把普通的字体变为富文字,然后使用富文字对应方法即可设置间距。
设置过程
给 label 添加一个分类,在分类中声明并实现三种方法
@interface UILabel (ChangeLineSpaceAndWordSpace)
//1.设置:行间距
+ (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space;
//2.设置:字间距
+ (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space;
//3.设置:行间距 与 字间距
+ (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace;
@end
1.设置:行间距
//传入需要设置的 Label 与需要设置的行间距数值
+ (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space {