Шаблон проектирования для использования одного и того же шрифта в приложении какао

Что было бы лучшим способом унифицировать шрифты в существующем приложении. Где у меня много XIBS или контроллеров представления с сгенерированными элементами управления.

Хотелось бы определить несколько размеров и один базовый шрифт.

В настоящее время я определил их как константы:

#define FONT_NAME        @"Helvetica Neue Light"
#define FONT_SIZE_NORMAL  13
....

Но константа не используется в xibs, и ей нужно будет пройти через все xibs и изменить шрифты или иметь какой-то специальный код при пробуждении из xib.

Думал о добавлении категории в NSFontили даже пенистый systemFontOfSize,

Есть какой-то шаблон дизайна, чтобы сделать это красиво в приложении какао?

1 ответ

Решение

С помощью NSFont Категория является хорошим выбором, когда вы устанавливаете шрифт в коде. Для xibs и раскадровок я предпочитаю использовать "Определенные пользователем атрибуты времени выполнения". Пример ниже для iOS, но для MacOS это будет то же самое.

Например, для метки: сначала создайте метод func fontWithStyle(style:NSNumber) -> (UIFont) в вашем UIFont категория Затем создайте подкласс CustomLabel который содержит свойство currentStyle

class CustomLabel: UILabel {
    var currentStyle:NSNumber = 0

    override func awakeFromNib() {
        ...

        self.font = UIFont.fontWithStyle(self.currentStyle)
    }
}

И наконец, в конструктор интерфейса добавьте атрибут времени выполнения currentStyle как на скриншоте

Другие вопросы по тегам