UIButtonカスタムフォントの垂直方向の配置


118

UIButtonビューが読み込まれたときに設定されるカスタムフォントを使用するを持っています。

- (void)viewDidLoad
{
    [super viewDidLoad];    
    self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}

私が持っている問題は、フォントが中心線から浮いているように見えることです。この行をコメントアウトすると、デフォルトのフォントが垂直方向に中央揃えで表示されます。ただし、カスタムフォントに変更すると、垂直方向の配置が崩れます。

カスタムフォントのテーブルセルでも同じ問題が発生します。

カスタムフォントの高さが他のフォントほど高くないことをビューのどこかに伝える必要がありますか?

編集:私が使用しているフォントがWindows TrueTypeフォントであることを認識しました。MacのTextEditで問題なく使用できますが、アプリの配置に関する問題のみです

垂直方向に中央揃えされていないボタンテキスト


私はこのフォント(.ttfではなく.otf)で同じ問題を抱えています:fontsquirrel.com/fonts/bebas-neue
Neal Ehardt

回答:


312

UILabelで正しくインストールされないカスタムインストールフォントで同様の問題が議論されました。解決策はありませんでした。

UILabelやUIButtonなどで同じ問題があった私のカスタムフォントで機能するソリューションを次に示します。フォントの問題は、そのアセンダープロパティがシステムフォントの値と比較して小さすぎるという事実であることが判明しました。アセンダーは、フォントの文字の上にある垂直方向の空白です。フォントを修正するには、Apple Font Tool Suiteコマンドラインユーティリティをダウンロードする必要があります。次に、フォントを取得して、次の操作を行います。

~$ ftxdumperfuser -t hhea -A d Bold.ttf

これによりが作成されますBold.hhea.xml。テキストエディターで開き、ascender属性の値を増やします。最適な値を正確に見つけるには、少し実験する必要があります。私の場合は、750から1200に変更しました。次に、次のコマンドラインでユーティリティを再度実行して、変更をttfファイルにマージします。

~$ ftxdumperfuser -t hhea -A f Bold.ttf

次に、結果のttfフォントをアプリで使用します。

OS X El Capitan

Apple Font Tool Suiteインストーラーは、保護されたディレクトリにバイナリファイルをインストールしようとするため、SIPが原因でOSX El Capitanで動作しなくなりました。手動で抽出する必要がありftxdumperfuserます。まずその後アンパックローカルディレクトリにDMGからPKGをコピーOS X Font Tools.pkgして

~$ xar -xf OS\ X\ Font\ Tools.pkg

今のフォルダに移動fontTools.pkgして

~$ cd fontTools.pkg/

ペイロードを抽出する

~$ cat Payload | gunzip -dc | cpio -i

これで、ftxdumperfuserバイナリは現在のフォルダーにあります。/usr/local/bin/次のように、ターミナルアプリケーション内のすべてのフォルダで使用できるように移動できます。

~$ mv ftxdumperfuser /usr/local/bin/

4
+1すばらしいヒント!アセンダーとディセンダーについての情報は、次のとおりです。typophile.com
node/

35
OTFファイルでも同様に機能しました。
mharper 2012年

2
このソリューションで変更されたカスタムフォントを使用し、複数の行を持つUITextViewでテキストを設定すると、行間距離が大きくなりすぎます。

5
iOS 7ベータ6では、フォントの配置の問題が修正されていることがわかりました。したがって、この修正を行うと、iOS 6では
正常に機能し

3
フォントツールはXcode 9用に更新され、High Sierraに正常にインストールされます。直接リンク:developer.apple.com/download/more
?=font –AndrésPizáBückmann

49

トップコンテンツ(タイトルではありません!)インセットを調整する問題を解決しました。

例:button.contentEdgeInsets = UIEdgeInsetsMake(10.0、0.0、0.0、0.0);

幸運を!


15
これは、フォントを編集するよりも簡単に見える、私にとっては良い迅速な解決策でした。myButton.titleLabel.font = [UIFont fontWithName:@ "FontName" size:20.0]; myButton.contentEdgeInsets = UIEdgeInsetsMake(3.0、0.0、0.0、0.0);
ジェイミーハミック2012年

鮮やかさ!ありがとうございました!私の問題は少し異なりました。デフォルトのフォントを使用した単純な+ボタンと-ボタンがあり、中央より下に表示されていました。ここでソリューションを使用してテキストを少し浮き上がらせ、見落とさないようにしました。
Patrick T Nelson

7

フォントに依存する可能性があるため、これで効果があるかどうかはわかりませんが、ベースラインがずれている可能性があります。

self.searchButton.titleLabel.baselineAdjustment = 
    UIBaselineAdjustmentAlignCenters;

3
フォントサイズがminimumScaleFactorで調整されている場合、UIButtonのtitleLabelでうまく機能します
smitt0​​4


2

これはInterface Builderで試すことができます。ここにそれを行う方法のスナップショットがあります-

ここに画像の説明を入力してください ここに画像の説明を入力してください

ご覧のとおり、IBでこれを実行しようとすると、独自の利点があります。


1
その設定はすでに設定されており、IBではフォントは垂直に表示されますが、デフォルトのフォントとして表示されます。アプリを実行したときのみ、カスタムフォントフェイスが表示され、垂直方向の中央に配置されません
Pete

IBで「カスタムフォント」を設定しますか?iOSフォントでサポートされていますか?
Srikar Appalaraju、2011

フォントはIBで設定されており、私の元の投稿で指定されたコードによっても設定されています。IBのフォント選択ドロップダウンには表示されますが、実際にはIB画面のモックアップには表示されません。
ピート

2

パーティーには遅れましたが、この問題がN回目に発生したので、私が見つけた最も簡単な解決策、つまりPython FontToolsを使用することを投稿したいと思いました。

  1. システムで使用できない場合は、Python 3をインストールします。

  2. FontToolsをインストールする

    pip3 install fonttools

    FontToolsには、XMLとの変換を可能にするTTXツールが含まれています。

  3. 同じフォルダーでフォントを.ttxに変換する

    ttx myFontFile.otf

  4. .ttxに必要な編集を行い、.otfファイルを削除します。これは次のステップで置き換えられるためです。

  5. ファイルを.otfに戻す

    ttx myFontFile.ttx


動機:kolyuchiによって溶液が不完全である、とさえしてこの拡張のインストールの流れ、稼働ftxdumperfuser10.15.2カタリナにエラーが発生しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.