edit: Diese Antwort ist seit iOS3.2 nicht mehr gültig; verwenden Sie UIAppFonts
Die einzige Möglichkeit, wie ich erfolgreich benutzerdefinierte Dateien laden kann, ist UIFont
s erfolgt über das private GraphicsServices-Framework.
Im Folgenden werden alle .ttf
Schriftarten im Hauptpaket der Anwendung:
BOOL GSFontAddFromFile(const char * path);
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
return newFontCount;
}
Sobald die Schriften geladen sind, können sie genau wie die von Apple bereitgestellten Schriften verwendet werden:
NSLog(@"Available Font Families: %@", [UIFont familyNames]);
[label setFont:[UIFont fontWithName:@"Consolas" size:20.0f]];
GraphicsServices können sogar zur Laufzeit geladen werden, falls die API in Zukunft verschwindet:
#import <dlfcn.h>
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
if (frameworkPath) {
void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
if (graphicsServices) {
BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
if (GSFontAddFromFile)
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
}
}
return newFontCount;
}
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.