This post was updated 3241 days ago and some of the ideas may be out of date.

前几天在使用国内顶尖的一个APP的时候,发现了一个很低级的错误。搜索出来的内容,显示的Label文字的头和尾巴都被切除了。具体是哪个APP我就不说了,但是你手机上肯定有。最后和他们的工程师提个这个问题,下个版本估计就修复了。

下面我们对UILabel的高度探讨一下:
如下图这样的问题:
UILabel被切
我们可以看到“这是一个测试”的头部和尾部都被切了,这是因为他们工程师在设置UILabel的时候把height设置为和font相同的大小了。例如font为14,height也为14。有人会说,设置成相同的大小没有问题呀!这你就错了,因为你可能只测试过iOS8以上版本,当在iOS7中此bug就出现了。
iOS8上面的显示:
UILabel的高度设置2
在iOS8上没有出现问题。
那么我们在设置Label高度的时候,应该设置为多少呢?这个问题需要系统来告诉我们。

CGSize size =[label.text sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]}];
NSLog(@"%f",size.height);
2015-08-14 11:07:19.949 LabelHeight[7535:86988] 16.702000

如图所示:不论在iOS7还是iOS8上面,系统计算出来的高度都是16.702000。
因此,我们平时尽量写好公共类,使用系统自动计算高度。如果想手动固定label的height的话,我们在font的基础上加3,也就是font为14,height就为17。
开发过程中一定要多测试几个模拟器,不同的模拟器bug是不可预见的。

以上内容是个人的见解,如有问题,欢迎朋友们批评指正,谢谢!

----------------------2016年1月12日----------------------

截止目前,这个应用还是这样,和技术人员联系,技术人员给我的答复是不能轻易改动。
多个人做一个应用,多了方便,少了情怀......