今天是周五,上班时候偷了点懒,没有去学习别人的博客,所以先写一下昨天遇到的小问题,在计算文字高度正确时,展示的UILab出现了高度不够的问题。
首先如题目上所说我在项目中计算了文字代码如下:
CGRect titleRect = [@"款进口大众尚酷款进口大众尚酷款进口大众尚酷款进阿斯顿" boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.]} context:nil];
UILabel *titleLab = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, titleRect.size.width, titleRect.size.height)];
titleLab.numberOfLines = 0;
titleLab.backgroundColor = [UIColor redColor];
titleLab.font = [UIFont systemFontOfSize:14.];
titleLab.text = @"款进口大众尚酷款进口大众尚酷款进口大众尚酷款进阿斯顿";
titleLab.textColor = [UIcolors colorWithHexValue:0x3e3a39 alpha:1.];
[self addSubview:titleLab];
得到的是一个CGRect,来供我给我的UILab设置大小,但是因为文字比较多(我的行数已经设置成多行),效果则变成了这样:
原因:
通过打断点观察,titleRect的矩形大小并没有问题,UILab的Frame也没有任何问题,那么哪里为什么会出现,展示文字时,矩形空间不够的情况呢?
想法:
经过后期观察我们发现,单行时如此操作不会出现类似的问题,但是多行时会出现,主要是由于“计算文字大小”这个算法木有计算文字在对象中间隙的问题,所以展示时文字多行本身会自动加上间隙,然而计算时总是少算一行。
解决:
之后发现了,一个非常简单的办法,就是给UILab高度加1,只用加1就好,再多几行也不会有事了。
UILabel *titleLab = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, titleRect.size.width, titleRect.size.height+1)];
改正后的效果:
感谢观看, 学以致用更感谢!