Ich möchte, dass eine Anwendung eine benutzerdefinierte Schriftart für das Rendern von Text, laden Sie es, und verwenden Sie es dann mit Standard UIKit
Elemente wie UILabel
. Ist dies möglich?
Antworten
Zu viele Anzeigen?Als Ergänzung zu @bdev's Antwort Hier ist eine aktualisierte Version, die nur benutzerdefinierte Schriftarten auflistet.
Schritt 1: Finden Sie alle Systemschriften mit @bdevs Antwort heraus und speichern Sie sie in einer Datei.
Fügen Sie den folgenden Code in den ersten View Controller's -(void)viewDidLoad
nach [super viewDidLoad]
(oder in der App Delegate):
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray array];
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
[system_fonts addObject:fontName];
}
}
if([paths count] > 0) {
[system_fonts writeToFile:[[paths objectAtIndex:0]
stringByAppendingPathComponent:@"array.out"] atomically:YES];
}
Führen Sie die App einmal aus. Beenden Sie sie danach.
Schritt 2: Benutzerdefinierte Schriftart zum Projekt hinzufügen
Fügen Sie mit der in der akzeptierten Antwort beschriebenen Methode Ihre benutzerdefinierten Schriftarten hinzu (denken Sie daran, die .plist
und fügen Sie die Schriftartendateien zum Build hinzu, indem Sie Add To Target
.
Schritt 3: Vergleichen Sie die Systemschriftarten mit der aktuellen Schriftartenliste
Ersetzen Sie die Codes in Schritt 1 durch:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray arrayWithContentsOfFile:[[paths objectAtIndex:0]
stringByAppendingPathComponent:@"array.out"]];
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
if (![system_fonts containsObject:fontName]) {
NSLog(@"%@", fontName);
}
}
}
Führen Sie die App aus, und die Liste der von Ihnen hinzugefügten benutzerdefinierten Schriftarten wird angezeigt.
Dies gilt für iOS 3.2 bis iOS 6 (zukünftige Versionen funktionieren wahrscheinlich problemlos). Funktioniert mit .ttc
y .ttf
auch.
Wie alle vorherigen Antworten gezeigt haben, ist es sehr wohl möglich, und in neueren iOS-Versionen ziemlich einfach.
Ich weiß, dass dies keine technische Antwort ist, aber da viele Leute es falsch machen (und damit effektiv gegen Lizenzen verstoßen, was Sie viel Geld kosten kann, wenn Sie verklagt werden), lassen Sie mich hier eine Einschränkung machen: Das Einbetten einer benutzerdefinierten Schriftart in eine iOS-App (oder jede andere Art) ist grundsätzlich Umverteilung von die Schriftart. Die meisten Lizenzen für kommerzielle Schriftarten enthalten verbieten Weiterverbreitung, also stellen Sie bitte sicher, dass Sie im Einklang mit der Lizenz handeln.
- See previous answers
- Weitere Antworten anzeigen
5 Stimmen
In einer der CS193p-Vorlesungen (iPhone Application Development) in Stanford stellte Evan fest, dass die Installation einer eigenen Schriftart auf einem Gerät "eine Menge Arbeit" ist, was zumindest bedeutet, dass es möglich ist :-)
2 Stimmen
IPhone 3.2 erlaubt benutzerdefinierte Schriftarten, aber nur für das iPad (siehe Antwort unten)
6 Stimmen
Am Ende habe ich Bilder verwendet.
2 Stimmen
Wow... nach all dem ist die Antwort immer noch Bilder... unglaublich. Ich hatte wirklich auf eine solide Implementierung von benutzerdefinierten Schriftarten gehofft, die dieselben Möglichkeiten wie Systemschriftarten bieten...
0 Stimmen
Hilfreiche Nachhilfe: codewithchris.com/
1 Stimmen
Ich habe die ursprüngliche Frage erheblich gekürzt, um dem Jahrzehnt Rechnung zu tragen, das seit meiner Frage vergangen ist. Ich möchte alle anderen ermutigen, ihre Kommentare und Antworten entsprechend zu kürzen.