美文网首页iOS开发-技术分享
Label 文字填满整个label

Label 文字填满整个label

作者: Beoyan | 来源:发表于2018-12-13 13:53 被阅读6次

目标需求如图所示

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 只要传入的宽度固定就能实现上图中的效果

相关文章

网友评论

    本文标题:Label 文字填满整个label

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