2010-12-21 5 views
9

Ich habe eine Schriftdatei (.ttf) zu meinem Xcode-Projekt hinzugefügt, um Ressourcen. Außerdem habe ich es zu den UIAppFonts in meiner info.plist hinzugefügt.ttf Schriftart nicht verfügbar für iPhone in Interface Builder oder Simulator

Wenn ich diese Schriftart verwenden möchte, sehe ich es nicht einmal als eine Wahl in IB.

Nach der Installation der Schriftart auf meinem System, ich begann es in IB zu sehen, aber immer noch - Änderung daran ändert nichts - eine Standardsystem Schriftart wird im Interface Builder sowie in iPhone Emulator angezeigt.

Gibt es irgendwelche Schritte mehr, die ich tun sollte, um meine eigene Schriftart verwenden zu können?

Antwort

17

Um benutzerdefinierte Schriftarten mit iOS zu verwenden, müssen Sie sie programmgesteuert festlegen.

Angenommen, Sie haben eine Schriftartendatei mit dem Namen swellfont.ttf, die Sie Ihrem Projekt hinzufügen. Sie würden dann in Ihre App-Info.plist-Datei gehen und den vollständigen Namen der Datei zum nächsten Index des von UIAppFonts gesicherten Arrays hinzufügen, wie Sie erwähnen.

<key>UIAppFonts</key> 
<array> 
    <string>swellfont.ttf</string> 
</array> 

Dann die Schriftart zu verwenden:

label.font = [UIFont fontWithName:@"swellfont" size:12]; 

dass Label ist ein UILabel und dass swellfont.ttf ist protected nicht angenommen wird. Es ist wichtig zu beachten, dass sich UIFonts fontWithName nicht auf den Dateinamen bezieht, sondern stattdessen den tatsächlichen Namen der Schriftart. Wenn Sie die Schriftart mit FontForge öffnen, können Sie diese Informationen anzeigen, indem Sie in der Menüleiste Element> Schrift-Info auswählen. Es gibt wahrscheinlich klügere Wege, diese Informationen zu finden.

+7

Es sollte angemerkt werden, dass die String-Argument der Schriftname sollte nicht die Dateinamen für die Font-Datei (die nicht identisch sein können oder nicht). Diese Unterscheidung ließ mich meine Räder ein wenig drehen. – cesarislaw

+0

yep - Ich habe diese Info hinzugefügt, als Sie kommentiert haben. Es gab mir auch ein Problem. Irgendwie verwirrend! Apple spielt schnell und locker mit der Definition von "Name". :) – Allyn

+0

Danke für diesen Tipp! Hat mir viel geholfen. – kender

0

Ich verwende 2 Fonts in einer APP. Der erste wurde automatisch zu "Copy Bundle Resources" hinzugefügt, der andere nicht. Ich musste das selbst hinzufügen.

Aufruf im Code:

[labelName setFont:[UIFont fontWithName:@"OneGreatBigFont" size:40]];