web-dev-qa-db-ja.com

xcodeカスタムttfフォントが機能しない

わかりましたので、SOを読んで、あらゆる種類のグーグルを実行しましたが、フォントが機能しない理由を理解できません。

私はすべてを正しく行ったと思いますが、アプリを実行すると、ボタンのテキストが、インポートしたフォントではなく標準のシステムフォントで表示されます。リストにあるかどうかを確認するためにNSLog(@"%@",[UIFont familyNames]);を追加しましたが、ありません。私はそれを間違って設定したと思います。

誰かができることを願っていますラベルのテキストをカスタムフォントで表示するのを手伝ってください。何か提案があるかもしれないと思っている人に感謝します!

ステップバイステップこれが私がやったことです

ステップ1:インターネットから.ttfファイルをダウンロードしました。私のファインダーではそれは次のようになります: enter image description here

手順2:フォントファイルをFinderからXCodeにドラッグし、[ファイルをプロジェクトフォルダにコピーする]オプションをオンにします。だから私のプロジェクトで見ることができます:

enter image description here

ステップ3:フォントブックでフォントを開いて、実際のファイル名を確認すると、次のように表示されます。 enter image description here

ステップ4: MyApp-Info.plistファイルに、ファイルタイプを含むXCodeからのファイル名を含むキーを追加しました。次のようになります。

enter image description here

ステップ5:そして、私のコードでこれを書きます:

UIButton *thisLevelButton = [UIButton buttonWithType:UIButtonTypeCustom];

[thisLevelButton setBackgroundImage:[UIImage imageNamed:@"ccLSButtonPlayed"] forState:UIControlStateNormal];
thisLevelButton.frame = CGRectMake(x, y, BUTTON_WIDTH, BUTTON_HEIGHT);
thisLevelButton.tag = j;
[thisLevelButton addTarget:self action:@selector(userSelectedButton:) forControlEvents:UIControlEventTouchUpInside];
[thisLevelButton.titleLabel setFont:[UIFont fontWithName:@"PressStartK" size:24]];
[thisLevelButton setTitle:[NSString stringWithFormat:@"%i",(j+1)] forState:UIControlStateNormal];

// add the button to the panel
[subScroll addSubview:thisLevelButton];

参考までに、これはフォントファミリのリストに出力されるものです。

(
    Thonburi,
    "Snell Roundhand",
    "Academy Engraved LET",
    "Marker Felt",
    "Geeza Pro",
    "Arial Rounded MT Bold",
    "Trebuchet MS",
    Arial,
    Marion,
    "Gurmukhi MN",
    "Malayalam Sangam MN",
    "Bradley Hand",
    "Kannada Sangam MN",
    "Bodoni 72 Oldstyle",
    Cochin,
    "Sinhala Sangam MN",
    "Hiragino Kaku Gothic ProN",
    Papyrus,
    Verdana,
    "Zapf Dingbats",
    Courier,
    "Hoefler Text",
    "Euphemia UCAS",
    Helvetica,
    "Hiragino Mincho ProN",
    "Bodoni Ornaments",
    "Apple Color Emoji",
    Optima,
    "Gujarati Sangam MN",
    "Devanagari Sangam MN",
    "Times New Roman",
    Kailasa,
    "Telugu Sangam MN",
    "Heiti SC",
    "Apple SD Gothic Neo",
    Futura,
    "Bodoni 72",
    Baskerville,
    "Chalkboard SE",
    "Heiti TC",
    Copperplate,
    "Party LET",
    "American Typewriter",
    "Bangla Sangam MN",
    Noteworthy,
    Zapfino,
    "Tamil Sangam MN",
    "DB LCD Temp",
    "Arial Hebrew",
    Chalkduster,
    Georgia,
    "Helvetica Neue",
    "Gill Sans",
    Palatino,
    "Courier New",
    "Oriya Sangam MN",
    Didot,
    "Bodoni 72 Smallcaps"
)
31
bkbeachlabs

フォントファイルをターゲットに追加していないため、アプリのリソースにコピーされていないようです。ここではコードは正常に機能し、フォントファミリのリストに「Press Start K」と表示されます。

38
omz

別の可能性としては、フォントを呼び出そうとしたときに、間違ったフォント名を呼び出している可能性があります。使用する:

Swift 2.1以降

//Check which fonts available
for family: String in UIFont.familyNames()
{
   print("\(family)")
   for names: String in UIFont.fontNamesForFamilyName(family)
   {
       print("== \(names)")
   }
}

目的C

//Check which fonts available
for (NSString* family in [UIFont familyNames])
{
    NSLog(@"FONT %@", family);

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

UIFont(name: "yourFontName"、size:24.0)(Swift)または[UIFont fontWithName:@ "yourFontName" size:16.0f](obj c)で使用する必要があるフォントの実際の名前を見つけるにはplistに追加するカスタムフォント名は、ディレクトリで呼び出されるファイル(.ttfまたは.otfを含む)と一致する必要がありますが、フォントを参照するコードは、この出力から取得するフォント名と一致する必要があります。幸運なフォントマスター!

12
ColossalChris