Изменить системный шрифт для приложения iPhone - все приложение - PullRequest
6 голосов
/ 10 ноября 2009

Есть ли способ изменить системный шрифт для всего приложения?

Я хочу определить шрифт для всего Приложения, чтобы мне не приходилось переходить к отдельным меткам или отдельным шрифтам, чтобы изменить его. Я хотел бы универсальное определение, которое изменит все шрифты, которые существуют в приложении. Как мне это сделать?

Ответы [ 6 ]

4 голосов
/ 16 апреля 2013

Вы можете использовать Pixate для стилизации вашего приложения. При использовании 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";
}

enter image description here

2 голосов
/ 07 февраля 2014

Кажется, работает по крайней мере для UILabel с:

@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
2 голосов
/ 10 ноября 2009

Я думаю, что правильный ответ: не делай этого! Выясните, почему вы думаете, что хотите это сделать, а затем найдите другой способ достичь тех же целей. И люди здесь будут рады помочь найти другой путь к этим целям. (Например, именно это и дает ответ coneybeare.)

Все это говорит ... в официальном SDK нет способа изменить системный шрифт. Возможно, вам удастся добиться определенного прогресса, воспользовавшись UIFont systemFontWithSize: method - см. http://www.cocoadev.com/index.pl?MethodSwizzling, чтобы узнать больше о методе swizzling. Имейте в виду (а) это только изменит внешний вид всего, что использует systemFontWithSize: чтобы получить его шрифт, (б) это может нарушить все виды вещей, которые зависят от наличия исходного размера шрифта, и (в) это вполне может вас отклонят из App Store.

Все эти предостережения дополняют вопрос: чего вы на самом деле пытаетесь достичь?

2 голосов
/ 10 ноября 2009

Создайте общий класс с именем Constants.h или что-то в этом роде. В нем сделайте это:

#define kStandardFont [UIFont systemFontOfSize:20] 

Конечно, отрегулируйте шрифт так, как вам нужно. Затем всякий раз, когда вам нужно его использовать (в ярлыке или где-либо еще), сделайте следующее:

#import "Constants.h"
…
…
… 
[label setFont:kStandardFont];
1 голос
/ 10 ноября 2009

Нет - именно поэтому он называется системный шрифт, а не приложение шрифт.

0 голосов
/ 10 ноября 2009

Шрифты специфичны для каждого элемента управления в пользовательском интерфейсе. Например, каждый UILabel имеет собственную настройку шрифта.

Если вы хотите изменить шрифт всех элементов управления, вам придется изменить их все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...