Шаблон проектирования для использования одного и того же шрифта в приложении какао
Что было бы лучшим способом унифицировать шрифты в существующем приложении. Где у меня много 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
как на скриншоте