iOS-UILabel踩的坑

   UILabel *lblDemo  = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 30)];
    lblDemo.text      = @"gyjqaab";
    lblDemo.font      = [UIFont systemFontOfSize:30];
    lblDemo.textColor = [UIColor blackColor];
    [self.view addSubview:lblDemo];

光看上面代码,可能觉得没什么问题,但是真机跑出来的效果如下

上图中四个字母底部都被“截”掉了一小部分,如果内容是其他英文字母则展示正常。经过尝试发现g,j,q,y,这四个字母则会被截掉,但是如果文本是中英文混排结果又是正常的。

UILabel的Frame高度不能简单的和字体的高度等同,UILabel在不同的字体设置下,对Frame的高度要求也不一样,大多数情况下都比Font的高度设置要高一些。

比如font size为13时,算出高度为16,font size为20时,算出高度为24,所以平常设置UILabel高度的时候,也不能简单的在font height基础之上加随意值。

文本渲染引擎在渲染一行文本的时候都需要在label的顶部和底部预留一小部分空间。

MrPeak杂货铺

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容