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;
}
本文介绍了在iOS开发中如何计算UILabel显示特定文字所需的行数。针对限制显示行数的需求,通过计算一行文字的宽度并除以UILabel的宽度,向上取整得到行数。并提供了使用UILabel分类实现该功能的方法。
2193

被折叠的 条评论
为什么被折叠?



