7

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

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

在此处输入图像描述

这是我的代码...

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

1 回答 1

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];
于 2011-09-13T09:40:46.407 回答