Ответ 1
У меня была такая же проблема при обновлении моего приложения iOS для iOS 7. Я хотел установить собственный шрифт для всего приложения, даже для элементов управления вам не разрешено настраивать их шрифт (например, сборщики).
После небольшого исследования в Интернете и в Twitter я решил использовать метод Swizzling, который является практикой, заключающейся в обмене реализациями методов.
ПРИМЕЧАНИЕ. Этот метод может быть опасным, если его использовать не рекомендуется! Прочтите эту дискуссию о SO: Опасности метода Swizzling
Однако это то, что нужно сделать:
- Создайте категорию UIFont, например UIFont + CustomSystemFont.
- Импортировать
<objc/runtime.h>
в ваш .m файл. - Оставьте файл .h немодифицированным и добавьте этот код в .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]; }
//Метод 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);
}