Изменить системный шрифт для приложения iPhone - все приложение целиком
Вопрос
Есть ли способ, которым я могу изменить Системный шрифт для всего приложения?
Я хочу определить шрифт для всего приложения, чтобы мне не приходилось переходить к отдельным меткам или шрифтам, чтобы изменить его.Я хотел бы получить универсальное определение, которое изменит все шрифты, существующие в приложении.Как мне это сделать?
Решение
Создайте общий класс под названием Constants.h
или что-то в этомроде.В нем сделайте это:
#define kStandardFont [UIFont systemFontOfSize:20]
Конечно, отрегулируйте шрифт так, чтобы он был таким, каким вам нужно.Затем, всякий раз, когда вам нужно будет использовать его (в ярлыке или что-то еще), сделайте это:
#import "Constants.h"
…
…
…
[label setFont:kStandardFont];
Другие советы
Вы можете использовать Пикселировать для оформления вашего приложения.При использовании pixate вы можете задать атрибуты стиля элементов вашего пользовательского интерфейса с помощью CSS.Таким образом, вы можете глобально настроить свои UILabels, UITextField и т.д.чтобы использовать ваш пользовательский шрифт.Это, безусловно, лучший способ придать вашему шрифту глобальный стиль.
В моем приложении мне пришлось использовать "Open Sans" и настроить все мои UILabels, UITextFields и UITextViews для использования этого шрифта:
В вашем "default.css"
label {
font-family: "Open Sans";
}
text-field {
font-family: "Open Sans";
}
text-view {
font-family: "Open Sans";
}
Я думаю, что правильный ответ таков:Не делай этого!Выясните, почему вы думаете, что хотите это сделать, а затем придумайте какой-нибудь другой способ достичь тех же целей.И люди здесь были бы рады помочь найти другой способ достижения этих целей.(Например.это то, что фактически предполагает ответ coneybeare.)
Все, что сказано ... в официальном SDK нет способа изменить системный шрифт.Возможно, вам удастся добиться некоторого прогресса, используя systemFontWithSize от UIFont:метод - см. http://www.cocoadev.com/index.pl?MethodSwizzling подробнее о методе обжаривания.Имейте в виду (a) это изменит только внешний вид всего, что использует systemFontWithSize:чтобы получить его шрифт, (b) это может привести к нарушению всех видов функций, которые зависят от наличия исходного размера шрифта, и (c) это вполне может привести к отказу от App Store.
Все эти предостережения подводят итог вопросу:Чего вы на самом деле пытаетесь достичь с помощью этого?
Кажется, работает, по крайней мере, для UILabel
s:
@interface UIFont (mxcl)
@end
@implementation UIFont (mxcl)
+ (id)systemFontOfSize:(CGFloat)sz {
return [UIFont fontWithName:@"AmericanTypewriter" size:sz]
}
+ (id)boldSystemFontOfSize:(CGFloat)sz {
return [UIFont fontWithName:@"AmericanTypewriter-Bold" size:x]
}
@end
Нет - вот почему это называется система шрифт, а не применение шрифт.
Шрифты специфичны для каждого элемента управления в пользовательском интерфейсе.Для exmaple каждая UILabel имеет свою собственную настройку шрифта.
Если вы хотите изменить шрифт всех элементов управления, вам придется изменить их все.