Ich möchte, dass eine App eine benutzerdefinierte Schriftart zum Rendern von Text enthält, diese lädt und dann mit Standardelementen UIKit
wie verwendet UILabel
. Ist das möglich?
ios
cocoa-touch
fonts
Airsource Ltd.
quelle
quelle
Antworten:
iOS 3.2 und höher unterstützen dies. Direkt aus dem neuen Dokument in iPhone OS 3.2 :
Sobald die Schriftarten in festgelegt wurden
Info.plist
, können Sie Ihre benutzerdefinierten Schriftarten wie jede andere Schriftart in IB oder programmgesteuert verwenden.In den Apple Developer Forums gibt es einen laufenden Thread:
https://devforums.apple.com/thread/37824 (Anmeldung erforderlich)
Und hier ist ein exzellentes und einfaches 3-Schritte-Tutorial, wie dies erreicht werden kann (defekter Link entfernt)
Info.plist
Datei einen Schlüssel mit dem Namen hinzuUIAppFonts
.UIAppFonts
Array einInfo.plist
[UIFont fontWithName:@"CustomFontName" size:12]
, um die benutzerdefinierte Schriftart für Ihre UILabels und zu erhalten UITextViews usw. zu erhalten.Außerdem: Stellen Sie sicher, dass sich die Schriftarten in Ihren Copy Bundle-Ressourcen befinden.
quelle
Bearbeiten: Ab iOS 3.2 ist diese Funktionalität integriert. Wenn Sie Pre-3.2 unterstützen müssen, können Sie diese Lösung weiterhin verwenden.
Ich habe ein einfaches Modul erstellt,
UILabel
das das Laden von .ttf-Dateien erweitert und handhabt. Ich habe es Open Source unter der Apache-Lizenz veröffentlicht und es hier auf Github gestellt .Die wichtigen Dateien sind
FontLabel.h
undFontLabel.m
.Es verwendet einen Teil des Codes aus Genericrichs Antwort .
Durchsuchen Sie die Quelle hier.
ODER
Kopieren Sie Ihre Schriftartdatei in Ressourcen
Fügen Sie Ihrer
Info.plist
Datei einen Schlüssel mit dem Namen UIAppFonts hinzu. ("Von der Anwendung bereitgestellte Schriftarten)Machen Sie diesen Schlüssel zu einem Array
Geben Sie für jede Schriftart den vollständigen Namen Ihrer Schriftartdatei (einschließlich der Erweiterung) als Elemente in das UIAppFonts-Array ein
speichern
Info.plist
Jetzt können Sie in Ihrer Anwendung einfach aufrufen
[UIFont fontWithName:@"CustomFontName" size:15]
, um die benutzerdefinierte Schriftart für IhrUILabels
undUITextViews
usw. zu erhalten.Für mehr Informationen
quelle
Es gibt eine einfache Möglichkeit, benutzerdefinierte Schriftarten in iOS 4 zu verwenden .
Chalkduster.ttf
) zum Ordner Ressourcen des Projekts in XCode hinzu.info.plist
und fügen Sie einen neuen Schlüssel mit dem Namen hinzuUIAppFonts
. Der Typ dieses Schlüssels sollte Array sein.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
in Ihrer Anwendung verwenden.Leider erlaubt IB nicht, Beschriftungen mit benutzerdefinierten Schriftarten zu initialisieren. Siehe diese Frage , um dieses Problem zu lösen. Meine Lieblingslösung ist die Verwendung einer benutzerdefinierten
UILabel
Unterklasse:quelle
Fügen Sie in Info.plist den Eintrag "Von der Anwendung bereitgestellte Schriftarten" hinzu und fügen Sie die Schriftnamen als Zeichenfolgen ein:
Überprüfen Sie anschließend, ob Ihre Schriftart enthalten ist, indem Sie Folgendes ausführen:
Beachten Sie, dass Ihr ttf-Dateiname möglicherweise nicht mit dem Namen übereinstimmt, den Sie beim Festlegen der Schriftart für Ihre Beschriftung verwenden (Sie können den obigen Code verwenden, um den Parameter "fontWithName" abzurufen):
quelle
Bearbeiten: Diese Antwort ist ab iOS3.2 nicht mehr gültig. Verwenden Sie UIAppFonts
Die einzige Möglichkeit, benutzerdefinierte
UIFont
s erfolgreich zu laden, ist das private GraphicsServices-Framework.Im Folgenden werden alle
.ttf
Schriftarten im Hauptpaket der Anwendung geladen :Sobald Schriftarten geladen sind, können sie genau wie die von Apple bereitgestellten Schriftarten verwendet werden:
GraphicsServices können sogar zur Laufzeit geladen werden, falls die API in Zukunft verschwindet:
quelle
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
für alle benutzerdefinierten Schriftarten, die ich ausprobiert habe , 0 Breite und Höhe zurückgegeben werden.Mit
iOS 8
+ undXcode 6
+ können Sie dies einfach machen. Hier sind die Schritte:1) Ziehen Sie Ihre Schriftart
Xcode
per Drag & Drop in den Ordner "Unterstützende Dateien". Vergessen Sie nicht, Ihre App im Abschnitt Zu Zielen hinzufügen zu markieren . Ab diesem Moment können Sie diese Schriftart in verwendenIB
und sie aus der Schriftartenpalette auswählen.2) Um diese Schriftart auf Ihrem Gerät verfügbar zu machen, öffnen Sie Ihren
info.plist
und fügen Sie denFonts provided by application
Schlüssel hinzu. Es enthält den Schlüssel Element 0, Sie müssen Ihren Schriftnamen als Wert hinzufügen. Der Name der Schriftart kann von Ihrem Dateinamen abweichen. Versuchen Sie jedoch zunächst, in den meisten Fällen Ihren Dateinamen hinzuzufügen.Wenn nicht, hat mir dieser Artikel immer geholfen.
Hier ist ein kurzer Ausschnitt des Codes aus diesem Artikel, der Ihnen hilft, Ihren Schriftnamen zu finden.
BEARBEITEN
Ich möchte erwähnen, dass Sie Schriftarten zu den Build-Phasen Ihres Ziels hinzufügen und Bundle-Ressourcen kopieren müssen . Ohne diese Option wird Ihre Schriftart nicht auf dem Gerät angezeigt. Und es könnte zu unerwartetem Verhalten führen.
Zum Beispiel, in denen ich ein
bug
, wennUITextField
benutzerdefinierten Schriftart, aber diese Schrift war nicht in den Copy Bundle - Ressourcen . Und wenn ich an die segueviewcontroller
mit diesemtextfield
, gibt es eine Verzögerung von 4 Sekunden , bevorviewDidLoad
Funktion aufgerufen wurde. Durch das Beheben von Schriftartproblemen wurde diese Verzögerung behoben. Empfehlen Sie es daher zweimal zu überprüfen. (rdar: // 20028250) Übrigens konnte ich den Fehler nicht reproduzieren, aber ich bin mir sicher, dass das Problem bei der Schriftart lag.quelle
Ich habe das so gemacht:
Laden Sie die Schriftart:
drawRect:
Tun Sie jetzt in Ihrem Fall Folgendes:Grundsätzlich müssen Sie eine Brute-Force-Schleife durch den Text ausführen und mit der magischen Zahl herumfummeln, um Ihren Versatz (hier sehe ich 29) in der Schriftart zu finden, aber es funktioniert.
Außerdem müssen Sie sicherstellen, dass die Schriftart legal eingebettet werden kann. Die meisten sind es nicht und es gibt Anwälte, die sich auf solche Dinge spezialisiert haben. Seien Sie also gewarnt.
quelle
CGContextShowTextAtPoint()
- obwohl es mit UTF-8 nicht funktioniert.Ja, Sie können benutzerdefinierte Schriftarten einfügen. Weitere Informationen zur
fontWithName:size:
Methode finden Sie in der Dokumentation zu UIFont .1) Stellen Sie sicher, dass Sie die Schriftart in Ihren Ressourcenordner aufnehmen.
2) Der "Name" der Schriftart ist nicht unbedingt der Dateiname.
3) Stellen Sie sicher, dass Sie das gesetzliche Recht haben, diese Schriftart zu verwenden. Indem Sie es in Ihre App aufnehmen, verteilen Sie es auch, und Sie müssen das Recht dazu haben.
quelle
Wenn Sie verwenden
xcode 4.3
, müssen Siefont
dasBuild Phase
unterCopy Bundle Resources
, gemäß https://stackoverflow.com/users/1292829/arne im Thread, Custom Fonts Xcode 4.3 , hinzufügen . Dies hat bei mir funktioniert. Hier sind die Schritte, die ich unternommen habe, damit benutzerdefinierte Schriftarten in meiner App funktionieren:OTF
(oderTTF
) Dateien per Drag & Drop in eine neue Gruppe gezogen, die ich erstellt habe, und die Auswahl von xcode akzeptiertcopying the files over to the project folder
.UIAppFonts
Array mit Ihren Schriftarten, die als Elemente im Array aufgeführt sind. Nur dienames
, nicht die Erweiterung (zB "GothamBold
", "GothamBold-Italic
").project name
obenProject Navigator
links auf dem Bildschirm auf den Weg .Build Phases
Registerkarte, die im Hauptbereich von xcode angezeigt wird.Copy Bundle Resources
Abschnitt " " und klicken Sie auf"+"
, um die Schriftart hinzuzufügen."+"
.add to the project
.quelle
Hier finden Sie eine schrittweise Anleitung dazu. Keine zusätzliche Bibliothek oder spezielle Codierung erforderlich.
http://shang-liang.com/blog/custom-fonts-in-ios4/
Meistens liegt das Problem bei der Schriftart, nicht bei der Methode. Der beste Weg, dies zu tun, ist die Verwendung einer Schriftart, die mit Sicherheit funktioniert, wie Verdana oder Geogia. Wechseln Sie dann zur gewünschten Schriftart. Wenn es nicht funktioniert, stimmt der Schriftname möglicherweise nicht oder die Schrift ist nicht gut formatiert.
quelle
Es ist sehr einfach, Ihrer vorhandenen iOS-App eine neue Schriftart hinzuzufügen.
Sie müssen nur die Schriftart, z. B. font.ttf, in Ihren Ressourcenordner einfügen.
Öffnen Sie Ihre Anwendung
info.plist
. Fügen Sie eine neue Zeile als "Von der Anwendung bereitgestellte Schriftarten" hinzu und geben Sie den Schriftnamen als font.ttf ein.Und wenn Sie die Schriftart einstellen, gehen Sie wie folgt vor
setFont:"corresponding Font Name"
Sie können überprüfen, ob Ihre Schriftart hinzugefügt wurde oder nicht
NSArray *check = [UIFont familyNames];
.Es gibt alle Schriftarten zurück, die Ihre Anwendung unterstützt.
quelle
Ich würde empfehlen, eines meiner bevorzugten kurzen Tutorials hier zu befolgen : http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/, aus dem diese Informationen stammen.
Schritt 1 - Ziehen Sie Ihre .ttf oder .otf aus dem Finder in Ihr Projekt
HINWEIS - Stellen Sie sicher, dass Sie auf das Feld "Zu Zielen hinzufügen" in Ihrem Hauptanwendungsziel klicken
Wenn Sie vergessen haben, darauf zu klicken, um es Ihrem Ziel hinzuzufügen, klicken Sie auf die Schriftartdatei in Ihrer Projekthierarchie und im rechten Bereich auf das Hauptziel der App im Abschnitt Zielmitgliedschaft
Um sicherzustellen, dass Ihre Schriftarten Teil Ihres App-Ziels sind, stellen Sie sicher, dass sie in Ihren Copy Bundle-Ressourcen in Build-Phasen angezeigt werden
Schritt 2 - Fügen Sie die Namen der Schriftdateien zu Ihrer Plist hinzu
Gehen Sie zu den benutzerdefinierten iOS-Zieleigenschaften in Ihrem Info- Bereich und fügen Sie den Elementen in diesem Abschnitt einen Schlüssel mit dem Namen hinzu
Fonts provided by application
(Sie sollten sehen, dass er bei der Eingabe als Option angezeigt wird und sich selbst als Array einrichtet. Klicken Sie auf den kleinen Pfeil Öffnen Sie die Array-Elemente und geben Sie die Namen der von Ihnen hinzugefügten .ttf- oder .otf-Dateien ein, damit Ihre App weiß, dass dies die gewünschten Schriftartdateien sindHINWEIS - Wenn Ihre App direkt nach diesem Schritt abstürzt, überprüfen Sie die Rechtschreibung der hier hinzugefügten Elemente
Schritt 3 - Finden Sie die Namen Ihrer Schriftarten heraus, damit Sie sie aufrufen können
Sehr oft unterscheidet sich der von Ihrer Anwendung angezeigte Schriftname von dem, von dem Sie glauben, dass er auf dem Dateinamen für diese Schrift basiert. Fügen Sie diesen in Ihren Code ein und überprüfen Sie das Protokoll, das Ihre Anwendung erstellt, um festzustellen, welcher Schriftname in Ihrem Code aufgerufen werden soll
Schnell
Ziel c
Ihr Protokoll sollte ungefähr so aussehen:
Schritt 4 - Verwenden Sie Ihre neue benutzerdefinierte Schriftart unter Verwendung des Namens aus Schritt 3
Schnell
Ziel c
quelle
Finden Sie die TTF im Finder und "Get Info". Unter der Überschrift "Vollständiger Name:" gab es einen Namen, mit dem ich ihn dann verwendete
fontWithName
(ich habe nur den genauen Namen kopiert und eingefügt, in diesem Fall war keine Erweiterung '.ttf' erforderlich).quelle
Es ist noch nicht erschienen, aber die nächste Version von cocos2d (2d Game Framework) unterstützt Bitmap-Schriftarten mit variabler Länge als Character Maps.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
Der Autor hat kein genaues Veröffentlichungsdatum für diese Version, aber ich habe einen Beitrag gesehen, der darauf hinweist, dass er in den nächsten ein oder zwei Monaten erscheinen wird.
quelle
Ein wichtiger Hinweis: Sie sollten den der Schriftart zugeordneten "PostScript-Namen" verwenden, nicht den vollständigen Namen oder den Familiennamen. Dieser Name kann sich häufig vom normalen Namen der Schriftart unterscheiden.
quelle
Folgen Sie diesem Schritt
1) Kopieren Sie Ihre Schriftart in Ihr Projekt
2) Öffnen Sie Ihre
.plist
Datei im Quellcodemodus ... (Hinweis - Nicht öffneninfo.plist
)3) Vorher - Klicken Sie mit der rechten Maustaste auf Ihre Schriftart und öffnen Sie sie in fontforge oder einem ähnlichen Editor.
install
In Ihrem System sollte dies der Fall seininstall
4) Geben Sie dies ein
5) Geben Sie diesen Code in Ihr
class .m
Hier werden lblPoints ab Ihrem Zeitpunkt geändert
UILabel
Erledigt!! Wenn Ihre Schriftart immer noch nicht funktioniert, überprüfen Sie zuerst die Kompatibilität Ihrer Schriftarten
quelle
info.plist
?Vielleicht hat der Autor vergessen, der Schrift einen Mac FOND-Namen zu geben ?
Sie können auch die Option "Apple" im Exportdialog ausprobieren.
HAFTUNGSAUSSCHLUSS : Ich bin kein IPhone-Entwickler!
quelle
Ich habe die verschiedenen Vorschläge auf dieser Seite unter iOS 3.1.2 ausprobiert und dies sind meine Schlussfolgerungen:
Die einfache Verwendung
[UIFont fontWithName:size:]
mit den Schriftarten im Ressourcenverzeichnis funktioniert nicht, selbst wenn der FOND-Name mit FontForge festgelegt wird.[UIFont fontWithName:size:]
funktioniert, wenn die Schriftarten zuerst mit GSFontAddFromFile geladen werden. AberGSFontAddFromFile
ist nicht Teil von iOS 3.1.2 , so dass es dynamisch geladen werden muss , wie durch @rpetrich beschrieben.quelle
Nachsehen
ATSApplicationFontsPath
Ein einfacher Plist-Eintrag, mit dem Sie die Schriftartendatei (en) in Ihren App-Ressourcenordner aufnehmen können und die in Ihrer App "nur funktionieren".
quelle
Ich habe einige der Ratschläge auf dieser Seite zu etwas zusammengefasst, das für mich unter iOS 5 funktioniert.
Zunächst müssen Sie Ihrem Projekt die benutzerdefinierte Schriftart hinzufügen. Befolgen Sie dann die Anweisungen von @iPhoneDev und fügen Sie die Schriftart zu Ihrer Datei info.plist hinzu.
Nachdem Sie das getan haben, funktioniert dies:
Sie müssen jedoch den Postscript-Namen Ihrer Schriftart kennen. Folgen Sie einfach den Ratschlägen von @Daniel Wood und drücken Sie Befehl-i, während Sie in FontBook sind.
Dann genießen Sie Ihre benutzerdefinierte Schriftart.
quelle
Fügen Sie zuerst die Schriftart im .odt-Format zu Ihren Ressourcen hinzu. In diesem Fall verwenden wir DINEngschriftStd.otf und weisen den Code dann mit diesem Code der Beschriftung zu
Um sicherzustellen, dass Ihre Schriftart in das Projekt geladen ist, rufen Sie einfach auf
In der .plist müssen Sie die Schriftart deklarieren. Fügen Sie einfach einen Datensatz "Von der Anwendung bereitgestellte Schriftarten" hinzu und fügen Sie eine Zeichenfolge für Element 0 mit dem Namen der Schriftart hinzu (DINEngschriftStd.otf).
quelle
Für iOS 3.2 und höher: Verwenden Sie die oben genannten Methoden:
[UIFont fontWithName:@"Real Font Name" size:16]
in Ihrer Anwendung.ABER der "echte Schriftname" ist nicht immer der, den Sie im Schriftbuch sehen. Am besten fragen Sie Ihr Gerät, welche Schriftarten es sieht und wie die genauen Namen lauten.
Ich benutze den uifont-name- grabber unter : uifont-name-grabber
Fügen Sie einfach die gewünschten Schriftarten in das xcode-Projekt ein, fügen Sie den Dateinamen zur Liste hinzu und führen Sie ihn auf dem Gerät aus, für das Sie erstellen. Sie erhalten dann eine vollständige Liste der Schriftarten mit den
UIFont fontWithName:
erwarteten Namen per E-Mail .quelle
Eine bessere Lösung besteht darin
Fonts provided by application
, Ihrerinfo.plist
Datei eine neue Eigenschaft " " hinzuzufügen .Anschließend können Sie Ihre benutzerdefinierte Schriftart wie gewohnt verwenden
UIFont
.quelle
Es gibt eine neue Möglichkeit, benutzerdefinierte Schriftarten zu verwenden, beginnend mit iOS 4.1. Sie können Schriftarten dynamisch laden, sei es aus Dateien, die in der App enthalten sind, heruntergeladene Daten oder was Sie haben. Außerdem können Sie Schriftarten nach Bedarf laden, während die alte Methode sie alle beim Start der App lädt. Dies kann zu lange dauern, wenn Sie über viele Schriftarten verfügen.
Die neue Methode wird beim Laden von ios-dynamic-font beschrieben
Sie verwenden die
CTFontManagerRegisterGraphicsFont
Funktion und geben ihr einen Puffer mit Ihren Schriftdaten. Es ist dann fürUIFont
und Webansichten verfügbar , genau wie bei der alten Methode. Hier ist der Beispielcode von diesem Link:quelle
kCTFontManagerErrorAlreadyRegistered
: "Die Datei wurde bereits im angegebenen Bereich registriert." developer.apple.com/library/ios/#documentation/Carbon/Reference/…Swift, Code Way: (funktioniert auch mit Swift 2.0)
Fügen Sie Ihrem Projekt die erforderlichen Schriftarten hinzu (genau wie beim Hinzufügen von Bildern, ziehen Sie sie einfach auf Xcode), stellen Sie sicher, dass sie auf Ihr Projekt ausgerichtet sind.
Fügen Sie diese Methode hinzu und laden Sie benutzerdefinierte Schriftarten (empfohlen in
appDelegate didFinishLaunchingWithOptions
).Anwendungsbeispiel:
Verwenden Sie die Schriftart:
quelle
Sie können die erforderlichen "FONT" -Dateien im Ressourcenordner hinzufügen. Gehen Sie dann zur Projektdatei
Info.plist
und verwenden Sie den SCHLÜSSEL "Von der Anwendung bereitgestellte Schriftarten" und den Wert "SCHRIFTNAME".Dann können Sie die Methode aufrufen
[UIFont fontwithName:@"FONT NAME" size:12];
quelle
Ich habe alles möglich gemacht, aber die neuen Schriftarten werden nicht angezeigt, also habe ich die Lösung gefunden:
Wenn Sie die Fot-Dateien (otf oder ttf) ziehen, vergessen Sie NICHT, das Kontrollkästchen unter "Zu Zielen hinzufügen" zu aktivieren.
Danach erscheint Ihre Schriftart und alles funktioniert einwandfrei.
quelle
Obwohl einige der obigen Antworten richtig sind, habe ich ein detailliertes visuelles Tutorial für Leute geschrieben, die immer noch Probleme mit Schriftarten haben.
Die oben genannten Lösungen weisen Sie an, die Schriftart zur Liste hinzuzufügen und zu verwenden
sind die richtigen. Bitte verwenden Sie jetzt einen anderen hackischen Weg. Wenn Sie immer noch Probleme haben, Schriftnamen zu finden und hinzuzufügen, finden Sie hier das Tutorial:
Verwenden von benutzerdefinierten Schriftarten in der iOS-Anwendung
quelle
Ja, Sie können in Ihrer Anwendung eine benutzerdefinierte Schriftart verwenden
Schritt für Schritt folgen dort:
Fügen Sie Ihre benutzerdefinierten Schriftdateien in unterstützenden Dateien zu Ihrem Projekt hinzu
Fügen Sie Ihrer Info.plist-Datei einen Schlüssel mit dem Namen UIAppFonts hinzu.
Machen Sie diesen Schlüssel zu einem Array
Geben Sie für jede Schriftart den vollständigen Namen Ihrer Schriftartdatei (einschließlich der Erweiterung) als Elemente in das UIAppFonts-Array ein
Info.plist speichern Jetzt können Sie in Ihrer Anwendung einfach [UIFont fontWithName: @ "Ihr benutzerdefinierter Schriftname" Größe: 20] aufrufen, um die benutzerdefinierte Schriftart für Ihre UILabels zu erhalten, nachdem Sie diese angewendet haben. Wenn Sie nicht die richtige Schriftart erhalten, doppelklicken Sie Klicken Sie hier auf die benutzerdefinierte Schriftart und kopieren Sie diese Schriftart. Fügen Sie sie hier ein. [UIFont fontWithName: @ "hier hinter Ihrem benutzerdefinierten Schriftartennamen" Größe: 20]
Ich hoffe, Sie erhalten die richtige Antwort
quelle
Ja, Sie können in Ihrer Anwendung eine benutzerdefinierte Schriftart verwenden
Schritt für Schritt folgen dort:
Info.plist
Datei Namen UIAppFonts hinzu.Info.plist
Jetzt speichern in Ihrer Anwendung können Sie einfach anrufen[UIFont fontWithName:@"your Custom font Name" size:20]
, um die benutzerdefinierte Schriftart für Ihre zu erhaltenUILabels
Nachdem Sie dies angewendet haben, wenn Sie nicht die richtige Schriftart erhalten, doppelklicken Sie auf die benutzerdefinierte Schriftart und sehen sorgfältig, dass der Name der oberen Schriftart kommt. Kopieren Sie diese Schriftart und fügen Sie sie ein. Hier
[UIFont fontWithName:@" here past your Custom font Name" size:20]
hoffe ich, dass Sie die richtige Antwort erhaltenquelle