44

iOS アプリケーションで HelveticaNeue-UltraLight を使用したいと考えています。フォント ファイルをリソースとしてプロジェクトに追加し、plist ファイルに「アプリケーションによって提供されるフォント」キーを追加しています。ファイル名は HelveticaNeue.dfont で、キー配列に追加しました。

利用可能なフォントを確認すると、今それを見ることができます...

  NSArray *fonts = [UIFont fontNamesForFamilyName:@"Helvetica Neue"];

for(NSString *string in fonts){
    NSLog(@"%@", string);
}

1-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-Bold
2011-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-CondensedBlack
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue-Medium
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-Light
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-CondensedBold
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-LightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLight // HERE IT IS!
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-BoldItalic
2011-07-08 17:32:57.870 myApp[5159:207] HelveticaNeue-Italic

しかし、[UIFont fontWithName:@"HelveticaNeue-UltraLight" size:12] で取得しようとすると、HelveticaNeue-Light が取得されます。

エラーや警告は表示されません。助けてください!

4

17 に答える 17

106

ファイルをプロジェクトに追加するだけでなく、ターゲットにも追加する必要があります。

時々 (私の場合のように)、Xcode で「.ttf」ファイルをドラッグ アンド ドロップすると、「ターゲットに追加」がチェックされません。これは、ファイルが実際にプロジェクトに表示されていることを意味しますが、アプリには埋め込まれていません。

それを確認するには:

  • プロジェクトの名前をクリックします (左ペイン)
  • 次に、ターゲット (中央のペイン)
  • 次に、「ビルド フェーズ」(右ペインの 3 番目のタブ)
  • 次に「バンドルリソースのコピー」

そのリストにフォント ファイルが表示されます。

于 2012-05-03T11:40:45.000 に答える
19

私が抱えていたのと同じ問題を抱えていると思います.iOSにはバグがあり、同じファミリから2つ以上のフォントを使用することはできません.

詳細と解決策については、こちらのブログ記事を参照してください: http://www.pixeldock.com/blog/uifont-problem-when-using-more-than-2-custom-fonts-of-the-same-font-family/

于 2011-08-11T08:40:49.720 に答える
10

Bundle "Font Provided by Application"プロパティにフォントファイルを追加した後、ドロップダウン矢印をクリックし、拡張子付きのフォント名を入力します

于 2013-10-07T06:19:02.423 に答える
10

同じフォントのさまざまなバリエーションで動作しています(IOS 8でも)。誰かが同じ問題を抱えている場合に備えて、間違いを投稿します...フォント名の代わりにフォントのファイル名を使用していました。有用な解決策は、使用可能なすべてのフォントを印刷して、私が使用していたものを探すことです。Swift では次のようになります。

for fontFamilyNames in UIFont.familyNames {
    for fontName in UIFont.fontNames(forFamilyName: fontFamilyNames) {
        print("FONTNAME:\(fontName)")
    }
}

この便利なチュートリアルは次の場所にあります: Code with Chris

于 2015-05-19T13:03:03.850 に答える
8

Font Book アプリケーションを開きます。フォントを自分でインストールした場合は、ユーザーに移動し、必要なフォントを探して、xcode プロジェクトでフォントの PostScript 名を使用します。

同じファミリの異なるフォント バリエーションでも機能するはずです。

于 2013-04-10T15:40:14.103 に答える
3

これはおそらく OP には役に立たないでしょうが、他の人には役立つかもしれません。

iOS 5 では、Helvetica Neueが自動的に含まれます。このカスタム フォントをバンドルに追加する必要はありません。そのフォント ファミリを Interface Builder から直接使用することも可能で、非常に便利です。

于 2012-01-27T17:18:53.503 に答える
2

これを試してみてください。これもあなたにとって有益です。

    [compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
于 2012-05-03T11:46:59.580 に答える
2

何時間も費やした後、追加する必要があるフォントの名前は、フォントのファイル名ではなく、実際のフォント名であることがわかりました。フォントファイルbonveno.ttfをインクルードしようとしていました。ファイル名と拡張子を info.plist に含めたところ、[バンドル リソースのコピー]リストにフォントが表示されました。私のコードは次のようでした

self.label.font = [UIFont fontWithName:@"bonveno" size:30];

それが問題の原因でした。次に、 Finderからフォント ファイルをダブルクリックして、フォントのプレビューを表示しました。その時、プレビュー ウィンドウでBonvenoCFというフォントの名前に気付きました。だから私はその名前を次のようなコードに追加しました

self.label.font = [UIFont fontWithName:@"BonvenoCF" size:30];

魅力のように働きました!! アプリでこのかわいいフォントなしでは生きられません。

于 2016-06-14T15:42:12.393 に答える
1

結局、サードパーティから Helvetica Neue UltraLight というフォントを購入しましたが、問題なく追加できました。

于 2011-07-14T13:36:59.260 に答える
1

スペースで試してください:

[UIFont fontWithName:@"Helvetica Neue UltraLight" size:12];

特定のフォントが表示されないを参照してください。

于 2011-07-08T22:50:25.153 に答える
0

iOS でカスタム フォントを使用するには、プロジェクトにドラッグ アンド ドロップしてフォントを追加するだけです。Info.plist の拡張子付きのフォント名の配列をキー「アプリケーションが提供するフォント」で言及します。次に、以下のコードを使用してすべてのフォント ファミリ名を出力します。

for (NSString* family in [UIFont familyNames])

{

    DebugLog(@"FONT FAMILY: %@", family);

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

コンソール印刷:

Arial ヘブライ語 ArialHebrew-Bold ArialHebrew-Light ArialHebrew

Calibri Calibri-Bold カリブリ

ジョージア ジョージア-太字斜体 ジョージア-太字 ジョージア-斜体 ジョージア

次に、コンソールから、実際のフォント名を取得します (上記のとおり)。以下のコードを使用してフォントを作成します -

コア テキスト :

CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);

UIKit で:

UIFont *font = [UIFont fontWithName:fontName size:10];

注 : ここで fontName = @"Calibri-Bold" は拡張子なしです。

于 2016-02-04T10:21:39.170 に答える
0

もう 1 つ確認することは、Mac の場合です。Font Book アプリを開きます。次に、ファイル -> ファイルの検証に移動し、フォントを開きます。そこで何かが失敗した場合 (警告があっても)、iOS は通常、アプリでのフォントの読み込みをエラーなしで拒否します。

その場合は、「Typelight」という無料アプリでフォントを開き、「名前を付けて保存」してフォントを再保存することで、エラーを修正できます。

于 2018-11-20T03:43:06.527 に答える
0

十分に説明された@Ben answerに加えて、まだフォントを取得していない場合は、フォントを使用するか、いずれかのフォントに割り当ててください。LabelこのコードStoryboardを使用して取得を開始します

それでもフォントを取得できない場合は[UIFont fontWithName:@"Font-Regular" size:11];、命名に問題があるはずです。デバッガーの任意のブレークポイントで停止し、別の名前を使用してデバッグし、poそうでない出力オブジェクトを確認しますnil

po [UIFont fontWithName:@" FontRegular " size:11];

また

po [UIFont fontWithName:@" Font Regular " size:11];

また

po [UIFont fontWithName:@" Font-Regular " size:11];

実際のフォント名を取得<UICTFont: 0x7fe2044021d0> font-family: "Interstate-Regular"; font-weight: normal; font-style: normal; font-size: 11.00ptします。それ以外の場合は取得しますnil

于 2018-11-26T10:49:58.597 に答える
0

古い質問ですが、info.plist に拡張子付きのフォント ファイル名を書き込む必要があることを強調したいと思います。これは特に私の間違いでした: 拡張機能を見逃していました。しかし、非常に興味深いのは、iOS が拡張機能を見逃した場合でも 3 つのフォントを正常にロードしたことです。拡張機能を追加すると、12 のフォントすべてが読み込まれました。

良い記事: https://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/

于 2019-12-28T08:30:46.540 に答える