14

私は現在、すべてのラベル/テキストビューなどがカスタムフォントで表示されるiPhoneプロジェクトに取り組んでいます(Xcode 4.2.1を使用しています)。私はこれについていくつかの調査を行いましたが、唯一の解決策は、フォントファイルをプロジェクトに追加し、info.plistファイルを適切に編集し、プログラムでフォントを設定することです(つまり、アウトレットまたは関連するビューをサブクラス化することによって)。いずれにせよ、これらのアプローチでは、インターフェイスビルダーがカスタムフォントでテキストを表示することはありません(Helveticaは引き続き表示されます)。属性インスペクターを使用してカスタムフォントを選択することはできません。

何かを見逃したとは思いませんが、プログラムでフォントを設定する以外に方法がないことを確認したいだけです。これは、私が取り組む必要のあるタスク(ローカリゼーションの問題、独自のアプリのデザインなど)にとってかなり苦痛です。 )。インターフェイスビルダーにカスタムフォントを表示させると便利です。

4

8 に答える 8

42

カスタムフォントはプログラムでのみ設定できます。残念ながら、これはInterface Builderのバグと呼ばれ、まだ修正されていません。

于 2012-03-13T12:45:12.543 に答える
6

Interface Builderでカスタムフォントを使用すると、再利用可能なライブラリを利用できます。

これを行うには、簡単なトリックを使用します。フォント(たとえばcalibri)を、プロジェクトで使用することのないすべてのUI要素に設定すると、FontReplacerがカスタムフォントとcalibriの間のマッピングを行います。したがって、IBOutletsやその他のグラフィックを作成する必要はありません。

プロジェクトで使用するFontReplacerをダウンロードできるgithubへのリンクは次のとおりです。https://github.com/0xced/FontReplacer

別の質問は 、InterfaceBuilderに表示されない同じフォントに対処することです 私もそこに可能な解決策を投稿しました

于 2012-12-20T10:55:15.677 に答える
2

XCode 6の時点で、インポートする必要のあるフォント(Lato)が表示されます。

あまりテストしていませんが、プレーンテキストラベルでは機能し、属性付きラベルでは機能しません。AtrributedはInterfaceBuilderで正常に表示されますが、実行時のデフォルトはシステムフォントです。

ただし、視覚的にそこに配置するか、テキストラベルを組み合わせて、「属性付き」テキストを実現する方がはるかに優れています。

于 2014-09-19T09:15:51.540 に答える
1

本当に不便です。この機能を待っている間、これはiOSプロジェクトのフォントに関するコードを整理するのに役立つと思います。

Common.hのようないくつかのグローバル変数を定義するために使用する共有クラスでは、使用できるフォントを定義します

#define FONT_LATO_REGULAR(s) [UIFont fontWithName:@"Lato-Regular" size:s]
#define FONT_LATO_LIGHT(s) [UIFont fontWithName:@"Lato-Light" size:s]
#define FONT_LATO_BOLD(s) [UIFont fontWithName:@"Lato-Bold" size:s]

次に、Common.h(共有クラス)を実装しているクラスにインポートし、ラベルのフォントを次のように設定します。

_lblTitle.font = FONT_LATO_BOLD(14.0);

最後に、すべてのフォント設定をメソッドに入れてさらに変更することができます。

- (void) setFontForLabels {
    _lblTitle.font = FONT_LATO_BOLD(14.0);
    _lblTime.font = FONT_LATO_REGULAR(13.0);
    _lblLocation.font = FONT_LATO_REGULAR(13.0);
}

それはあなたを少し助けるかもしれません。フォントをすでにsplistファイルにインポートしていることを確認してください。

于 2014-04-16T07:47:54.953 に答える
1

iOS5.0以降に適用されます。

カスタムUI-Element(、、など)クラスを作成UIButtonUILabelUITextField変更を反映するストーリーボード内の特定の要素のクラス名を変更するだけです。

以下はカスタムボタンのコードです。他の要素についても同じことができます。

CustomButtton.h

@interface CustomButtton : UIButton

@end

CustomButtton.m

@implementation CustomButtton

    - (void)awakeFromNib {
        // Initialization code

        if ([self isFontBold:self]) {

            self.titleLabel.font = [UIFont fontWithName:@"LaoUI-Bold" size:self.titleLabel.font.pointSize];

        } else {

            self.titleLabel.font = [UIFont fontWithName:@"LaoUI" size:self.titleLabel.font.pointSize];
        }

        NSLog(@"Fonts:%@",[UIFont familyNames]);
    }

    -(BOOL)isFontBold:(UIButton *)sender {

        UIFont *font = self.titleLabel.font;
        UIFontDescriptor *fontDescriptor = font.fontDescriptor;
        UIFontDescriptorSymbolicTraits fontDescriptorSymbolicTraits = fontDescriptor.symbolicTraits;
        return (fontDescriptorSymbolicTraits & UIFontDescriptorTraitBold);
    }

@end

次に、フォントのサイズとタイプ(太字または通常)を設定するだけです。要素をカスタムフォントで自動的に更新します。

作成者:[UIFontfamilyNames]-.plistファイルで定義したカスタムフォントファミリがアプリケーションに含まれているかどうかを確認できます。

次に、以下のスクリーンショットに示すように、プロジェクトの.plistファイルにキーを追加する必要があります。

アプリケーションでのカスタムフォントサポートの.plistの変更

于 2015-06-04T09:44:21.033 に答える
0

以前のバージョンではこれを試していませんが、XCode 6では、プロジェクトにフォントが正しくインストールされていて、たとえばFont Bookを使用してMacにフォントをインストールすると、XCodeはフォントピッカーにフォントを表示します。 1つのラベルに複数のカスタムフォントとサイズを設定でき、実行時に実際に正しいフォントを使用しているようです。

すべてがバラではありません。InterfaceBuilderの属性コントロールはまだ混乱しています。特に一度に複数の段落を属性付けしようとすると、割り当てられたプロパティを見失うことがよくあります。フォントの色がうまくくっつかない。選択が重なると、信じられないほど混乱します。たとえば、ラベルに2つの段落があり、2つの異なるフォントがあり、両方を選択してフォントサイズを変更すると、一方または両方の段落の属性がシステムのデフォルトに設定される場合があります。

于 2014-10-08T09:26:42.220 に答える
0

ストーリーボードまたは属性インスペクターを使用したxibでカスタムフォントを設定できます。ストーリーボードのカスタムフォントを参照してください

于 2014-12-07T03:09:22.403 に答える
-4

簡単なトリックを使用して、InterfaceBuilderでカスタムフォントを使用できます。これは、この点で役立つ可能性のある説明的なチュートリアルです。チュートリアルについては、 ここをクリックしてください

于 2013-05-19T09:33:45.890 に答える