2011-09-13 7 views
6

UIFontのsizeWithFontによって返されるものに基づいてUILabelsフレームを設定していますが、何らかの理由でカスタムフォントを使用した場合、返される値には以下のようなパディングが含まれます。UIFont sizeWithFontが計算に空白を含むのはなぜですか?

私は(私は欲しいものですboldSystemFontOfSizeテキストを縦に中央に整列されたを使用していますが、私はfontWithNameを使用する場合、私は、テキストの下のパディングで終わります。何らかの理由でサイズがありますがパディングに追加されていますか?

enter image description here

HERESに私のコード...

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

が可能であることを私は使用していたフォント "ゴッサム" もの含めますこのパディングと私はフォントを編集する必要がありますか? – AlBeebe

答えて

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

あなたは私の疑惑を確認しました。好奇心のために、この余分な詰め物をフォントのどのプロパティが底に持っているのかあなたは何らかのアイディアを持っていますか? – AlBeebe

+0

あなたが言ったような問題の原因となっているのは実際のフォントであることを100%確認しました。私はFontForgeをダウンロードして、Helvetica.ttfの内容と一致するようにgotham.ttfのすべての設定を変更しました。余分な埋め込みを取り除くことができました。 – AlBeebe

+0

こんにちはAlBeebe。私は同じ問題があり、FontForgeを使っていくつかのフォントプロパティを変更しようとしています。あなたは何の価値を変えましたか教えてください。どうもありがとう! – LocoMike

関連する問題