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];

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

iOS-UILabel踩的坑_第1张图片

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

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

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

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

MrPeak杂货铺

你可能感兴趣的:(iOS-UILabel踩的坑)