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

このパディングの考えられる原因はフォントだけですが、1行のラベルだけが必要な場合は、フォントの編集に時間を無駄にせず、次のようにして適切なフレームを設定した後、ラベルの高さを数ピクセル減らしてください。

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 に答える