4

私は同様の問題についてSOをくまなく調べましたが、それらのほとんどは、コピーリソースのビルドフェーズにフォントを追加するのを忘れた可能性があると言っているようです。また、両方のフォントがビルド ターゲットの一部であることも確認しました。

私はそれを2回、3回チェックしました。どちらのフォントもコピー リソース フェーズにあり、両方とも plist にリストされています。

plist

アプリ デリゲートで、それぞれのフォント ファミリで使用できるフォントを確認すると、予期しない結果が得られます

NSLog(@"%@", [UIFont fontNamesForFamilyName:@"DS-Digital"]);
NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Proxima Nova"]);

最初の出力は、私が望んでいた "( "DS-Digital-Italic" )" で、2 番目の出力は " ( "ProximaNova-Regular") " でした。

次のようにいずれかのフォントを使用すると、シミュレーターにのみ表示されますが、どのデバイスでもデフォルトでシステム フォントに戻ります。

[_estimateLabel setFont:[UIFont fontWithName:@"DS-Digital-Italic" size:50]];

また

[cell.mainLabel setFont:[UIFont fontWithName:@"ProximaNova-Regular" size:20]];

足りないものはありますか?XCode 5 を iPad mini と iPhone 5C (両方とも iOS 7) で使用しています。

4

4 に答える 4

17

Fontbook でフォントを開きます (Mac に同梱されています)。次のように、ポストスクリプト名で呼び出すようにしてください。 ここに画像の説明を入力

その呼び出し元@"HelveticaNeueCE-Thin"

また、フォントをプロジェクトに追加したときに、「ターゲットに追加:」でフォントの名前を確認したことを確認してください。これを行わないと、iDevice に送信されるアプリ バンドルにフォントがコピーされません。

于 2013-09-25T18:50:11.580 に答える
0

これを AppDelegate で実行して、デバイスで実行したときにフォント ファミリと名前が表示されるかどうかを確認します。

for (NSString *family in [UIFont familyNames]) {
    NSLog(@"%@", family);
    for (NSString *name in [UIFont fontNamesForFamilyName:family]) {
        NSLog(@"\t%@", name);
    }
}

フォント ファミリと名前が表示され、スペルが正確な場合は、フォント ファイルに問題がある可能性があります...? デバイス ログ (またはコンソール) を見て、ファイルの使用中にエラーがないかどうかを確認します。

フォントがコード内のどこかで、またはインターフェースビルダーからもオーバーライドされる可能性はありますか? フォントはどこに設定していますか?

于 2013-09-25T19:52:30.607 に答える
0

Did you make sure you got the font name spelled correctly? See this post Can I embed a custom font in an iPhone application? for reference

于 2013-09-25T18:42:04.850 に答える
0

私はプログラムで書いているので、XCode にもっと簡単な方法があるかどうかはわかりません。Mac で開発することさえしませんが、次のようにカスタム フォントをロードします。

// Load font
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:@"/path/to/font.ttf"]);
CGFontRef uiFont = CGFontCreateWithDataProvider(fontDataProvider);
NSString * uiFontName = (__bridge NSString *)CGFontCopyPostScriptName(uiFont);
CGDataProviderRelease(fontDataProvider);
CFErrorRef error;
CTFontManagerRegisterGraphicsFont(uiFont, &error);
CGFontRelease(uiFont);
UIFont *yourfont = [UIFont fontWithName:uiFontName size:20.0f];

XCodeにはそれを行う方法があると思いますが、機能するコードのスニペットが必要な場合は、常にオプションです

于 2013-09-25T18:51:42.213 に答える