Мы расширили UILabel, чтобы иметь возможность применять стандартные шрифты и цвета для всех видов использования данного типа меток в наших приложениях. Например.
@interface UILabelHeadingBold : UILabel
@end
В нашем приложении AppDelegate мы применяем шрифты и цвета, подобные этому
[[UILabelHeadingBold appearance] setTextColor:<some color>];
[[UILabelHeadingBold appearance] setFont:<some font>];
При добавлении UILabel в наши XIB мы теперь можем выбрать класс типа UILabelHeadingBold, и он работает так, как ожидалось. Метка отображается с правильным шрифтом и цветом, как указано в нашем AppDelegate.
Однако, если мы создаем метку программно, например.
UILabelHeadingBold *headingLabel = [[UILabelHeadingBold alloc] initWithFrame:CGRectMake(10, 10, 100, 30)];
[self.mainView addSubview:headingLabel];
UILabel не получает ожидаемый шрифт/цвет. Мы должны вручную применить эти атрибуты.
Есть ли способ заставить UIAppearance вступить в силу для программно созданных элементов пользовательского интерфейса или работает только при использовании в XIB?