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];
光看上面代碼巾表,可能覺(jué)得沒(méi)什么問(wèn)題,但是真機(jī)跑出來(lái)的效果如下
上圖中四個(gè)字母底部都被“截”掉了一小部分略吨,如果內(nèi)容是其他英文字母則展示正常集币。經(jīng)過(guò)嘗試發(fā)現(xiàn)g,j翠忠,q鞠苟,y,這四個(gè)字母則會(huì)被截掉秽之,但是如果文本是中英文混排結(jié)果又是正常的当娱。
UILabel的Frame高度不能簡(jiǎn)單的和字體的高度等同宰僧,UILabel在不同的字體設(shè)置下皇钞,對(duì)Frame的高度要求也不一樣,大多數(shù)情況下都比Font的高度設(shè)置要高一些躺酒。
比如font size為13時(shí)河质,算出高度為16冀惭,font size為20時(shí),算出高度為24掀鹅,所以平常設(shè)置UILabel高度的時(shí)候云头,也不能簡(jiǎn)單的在font height基礎(chǔ)之上加隨意值。
文本渲染引擎在渲染一行文本的時(shí)候都需要在label的頂部和底部預(yù)留一小部分空間淫半。