iOS 计算UILable显示文字所需要的行数

来源:互联网 发布:mp3剪切合并软件 编辑:程序博客网 时间:2024/06/09 04:10

iOS 计算UILable显示文字所需要的行数

场景:

​ 项目中经常有一些这样的需求,在页面上有可能会显示有一段很长的文字,但是呢为了显示效果,就会限制显示行数,如果感兴趣就点击按钮展开。

思路:

​ 所谓行数,可以这样理解,先计算出展示这段文字一行所需要的宽度,然后拿这个宽度除以label的宽度,得到值向上取整就是行数。

实现:

​ 写了一个UILabel分类,添加了一个方法,主要步骤写了注释。

/** 显示当前文字需要几行 @param width 给定一个宽度 @return 返回行数 */- (NSInteger)needLinesWithWidth:(CGFloat)width{    //创建一个labe    UILabel * label = [[UILabel alloc]init];    //font和当前label保持一致    label.font = self.font;    NSString * text = self.text;    NSInteger sum = 0;    //总行数受换行符影响,所以这里计算总行数,需要用换行符分隔这段文字,然后计算每段文字的行数,相加即是总行数。    NSArray * splitText = [text componentsSeparatedByString:@"\n"];    for (NSString * sText in splitText) {        label.text = sText;        //获取这段文字一行需要的size        CGSize textSize = [label systemLayoutSizeFittingSize:CGSizeZero];        //size.width/所需要的width 向上取整就是这段文字占的行数        NSInteger lines = ceilf(textSize.width/width);        //当是0的时候,说明这是换行,需要按一行算。        lines = lines == 0?1:lines;        sum += lines;    }    return sum;}
阅读全文
0 0
原创粉丝点击