计算多行文字,高度展示不对的问题

来源:互联网 发布:数据恢复软件比较 编辑:程序博客网 时间:2024/04/30 03:24

今天是周五,上班时候偷了点懒,没有去学习别人的博客,所以先写一下昨天遇到的小问题,在计算文字高度正确时,展示的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)];


改正后的效果:



感谢观看, 学以致用更感谢!




1 0
原创粉丝点击