Ich hatte das gleiche Problem beim Aktualisieren meiner iOS App für iOS 7. Ich wollte eine benutzerdefinierte Schriftart für die gesamte Anwendung festlegen, auch für Steuerelemente, die nicht erlaubt sind, ihre Schriftart anzupassen (z. B. Picker).
Nach ein wenig Forschung im Internet und auf Twitter, löste ich mit Methode Swizzling, die eine Praxis besteht, die Methodenimplementierungen auszutauschen.
HINWEIS: Diese Methode kann gefährlich sein, wenn sie nicht sorgfältig verwendet wird! Lesen Sie diese Diskussion über SO:
- erstellen UIFont Kategorie, wie UIFont + CustomSystemFont: Dangers of Method Swizzling
jedoch das, was zu tun ist.
- Importieren Sie
<objc/runtime.h>
in Ihre .m-Datei.
- Lassen .h-Datei unmodifizierten und fügen Sie diesen Code auf die .m:
+(UIFont *)regularFontWithSize:(CGFloat)size
{
return [UIFont fontWithName:@"Your Font Name Here" size:size];
}
+(UIFont *)boldFontWithSize:(CGFloat)size
{
return [UIFont fontWithName:@"Your Bold Font Name Here" size:size];
}
// Methode Swizzling
+(void)load
{
SEL original = @selector(systemFontOfSize:);
SEL modified = @selector(regularFontWithSize:);
SEL originalBold = @selector(boldSystemFontOfSize:);
SEL modifiedBold = @selector(boldFontWithSize:);
Method originalMethod = class_getClassMethod(self, original);
Method modifiedMethod = class_getClassMethod(self, modified);
method_exchangeImplementations(originalMethod, modifiedMethod);
Method originalBoldMethod = class_getClassMethod(self, originalBold);
Method modifiedBoldMethod = class_getClassMethod(self, modifiedBold);
method_exchangeImplementations(originalBoldMethod, modifiedBoldMethod);
}
wurde Es '[[UILabel Aussehen] setFont: [UIFont fontWithName: @ "YourFontName" Größe: 17.0]]; ' welches nun veraltet ist. Sehen Sie sich den Link von StuartM an - das ist eine gute Antwort. – brainray