美文网首页SwiftObject-CiOS Cocoa
iOS下如何让UILabel两端对齐

iOS下如何让UILabel两端对齐

作者: 严谨风 | 来源:发表于2016-01-28 10:15 被阅读3315次

UILabel似乎没有提供这个方法,而网上的方法看了感觉有点复杂,于是自己写了一个UIlabel的Category。

废话少说,直接上代码。

UILable两端对齐代码

只要在UILabel中实现这个代码,然后再提供一个外部接口就好。

下面是效果图

效果如图

是不是简单轻松?如果亲测有效,记得回来点赞哦。

相关文章

网友评论

  • 码渣:其实系统提供了方法
    label.textAlignment = NSTextAlignmentJustified;
    不过我有个需要就是最后一行如果文字没满,就不需要两端对齐
    其它行对齐主要是右边空太多好丑
  • 我的发:那个MAXFLOAT宏是什么内容?
    严谨风:@softlipa 一个极大值,你可以理解为无限大
  • 独木舟的木:楼主,怎么使用了你的方法以后,UILabel 上的几个文字都重叠在一个字上了?
    撞不倒的南墙:可能是self.frame.size.width为nil,导致你的margin为负,强行转为正的
  • WhatHurtsMore:我有一个疑问 如果两个label各有12个字 我想让前5个字对齐就好 这样用cgfloatwidth是不是太不准确了:smile: 有好的解决方式么
  • JhonBook:请问,如何在UILabel加了自动布局约束后,也实现同样效果。目前的代码当label使用了自动布局后,是不能用的
    MccReeee:http://www.jianshu.com/p/5927f5e22c3d
    我觉得这个办法更好
    严谨风:@JhonBook 在设置约束时需要给Label提供一个固定的wtdth。
  • 张博的简书:在方法的第一句上面加
    [self layoutIfNeeded];
  • 可恶:代码发成可复制的呀,楼主
    93ffef87e527:- (void)LabelAlightLeftAndRightWithWidth:(CGFloat)labelWidth {
    CGSize testSize = [self.text boundingRectWithSize:CGSizeMake(labelWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine| NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName :self.font} context:nil].size;

    CGFloat margin = (labelWidth - testSize.width)/(self.text.length - 1);
    NSNumber *number = [NSNumber numberWithFloat:margin];
    NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:self.text];

    [attribute addAttribute: NSKernAttributeName value:number range:NSMakeRange(0, self.text.length - 1 )];
    self.attributedText = attribute;
    }
    严谨风:@可恶 由于简书的编辑器原因,如果使用markdown只能重发文章,所以早起文章仍然保持图片,以后的文章中出现的代码都会是可复制的。
  • 跳跳虾:不能用吧,我试的没有效果啊,楼主
    严谨风:@LiuWenqiang 一段文字。。。。不好意思,这个方法只支持单行,如果你是搞一段文字,我建议你用UITextView。
    跳跳虾:@严谨风 我也是这样做的啊,但是一段文字中有标点符号的时候,右边还是对不齐
    严谨风:@LiuWenqiang 创建UILabel的分类,导入我导入的头文件,实现
    - (void)changeAlignmentRightandLeft;方法并在category的头文件中声明外部接口。
    实现category后,让需要两端对齐的ULLabel调用changeAlignmentRightandLeft方法。像这样[label changeAlignmentRightandLeft];
    明白了吗?
  • e琳:厉害,赞一个! :blush:
  • 不会算卦的杨大仙: :+1: 干货~ 楼主加油
  • SuGrand:[attString addAttribute:(id)kCTKernAttributeName value:number range:NSMakeRange(0, string.length - 1)]; 这一行代码报错
    严谨风:@SuGrand 看贴图的第一行,#import <CoreText/CoreText.h>,一定要导入这个框架,不然无法使用kCTKernAttributeName这个属性。
  • d0888ada7e24:这个一直会崩溃啊
    严谨风:@sadzc 会崩溃?我用着完全没问题啊,报什么错?

本文标题:iOS下如何让UILabel两端对齐

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