为什么UIFont sizeWithFont在计算中包含空格?

时间:2011-09-13 07:38:33

标签: ios uilabel uifont

我根据UIFont sizeWithFont返回的内容设置UILabels框架,但无论出于何种原因,当我使用自定义字体时,返回的值包括一些填充,如下所示。

当我使用 boldSystemFontOfSize 时,文本在中间垂直对齐(这就是我想要的),但是当我使用 fontWithName 时最终在文本下填充。是什么原因 sizeWithFont 正在填充中添加?

enter image description here

继承我的代码......

CGRect frameLabel = label.frame;
CGSize sizeLabel = [label.text sizeWithFont:label.font];
frameLabel.size.width = sizeLabel.width;
frameLabel.size.height = sizeLabel.height;
[label setBackgroundColor:[UIColor redColor]];

**编辑**

我可以使用此代码计算顶部和底部填充,并调整标签 frame.origin.y 以垂直居中我的标签所需的位置

float topPadding = [label.font ascender] - [label.font capHeight];
float bottomPadding = [label.font lineHeight] - [label.font ascender];

1 个答案:

答案 0 :(得分:3)

字体是此填充的唯一可能原因,但如果您只需要单行标签,请不要浪费时间编辑字体,只需通过执行某些操作设置适当的帧后将标签的高度减少几个像素像这样:

label.frame = CGRectInset(label.frame, 0, bottomPadding);

此外,而不是:

CGRect frameLabel = label.frame;
CGSize sizeLabel = [label.text sizeWithFont:label.font];
frameLabel.size.width = sizeLabel.width;
frameLabel.size.height = sizeLabel.height;

您可以致电:

[label sizeToFit];