Label 文字填满整个label

目标需求如图所示

image

一开始项目比较着急拿到这个需求直接用最简单粗暴的方式用空格来填充(这个就不介绍了 丢脸)


后来抽出时间来修改这里首先想到使用的是系统的平铺布局


    NSTextAlignmentJustified =3,    // Fully-justified. The last line in a paragraph is natural-aligned.*

也就是这个对齐方式按照意思应该可以实现不清楚哪里出了问题 导致并不是想象中的样子


第二种方式自己计算文字的边距自己来控制文字的显示于是就诞生了这个类别

/**
 label 自动算字间距铺满整个label

 @param labelWidth 整体label 的宽度
 */
- (void)labelAlightLeftAndRightWithWidth:(CGFloat)labelWidth{
    
    //计算宽度
    CGSize textSize = [self.text boundingRectWithSize:CGSizeMake(MAXFLOAT, self.font.pointSize + 5) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading  attributes:@{NSFontAttributeName :self.font} context:nil].size;
    
    CGFloat margin = (labelWidth - textSize.width)/(self.text.length - 1);
    
    if (margin < 0) margin = 0;
    
    NSNumber *number = [NSNumber numberWithFloat:margin];
    
    NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc]initWithString:self.text];
    
    //字间距 :NSKernAttributeName
    [attribute addAttribute:NSKernAttributeName value:number range:NSMakeRange(0, self.text.length - 1)];
    
    self.attributedText = attribute;
}

这个类别 先计算文字完全显示下需要的宽度 然后根据固定宽度计算字间距 然后设置当前label 只要传入的宽度固定就能实现上图中的效果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,035评论 3 119
  • 今天听怀沙老师解读的《你一生的故事》之后我才对电影《降临》有了更深入的认识。 这部科幻小说讲的故事有两条线索,一条...
    huifang963阅读 1,885评论 0 0
  • 一、水表的重要性 水表,是城镇供水企业的主要计量器具之一,是企业的重要贸易结算工具,又是督促人们节约用水、合理使用...
    爱猫爱狗爱自由阅读 10,917评论 2 0
  • 正量子纠缠阅读 1,170评论 0 0
  • 当街子窃笑,莫语他人识。一饮瓢中水,冷暖心自知。
    双山阅读 1,124评论 0 0