Изменить системный шрифт для приложения iPhone - все приложение целиком

StackOverflow https://stackoverflow.com/questions/1710180

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

Создайте общий класс под названием 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";
}

enter image description here

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

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

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

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

@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 имеет свою собственную настройку шрифта.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top