Мы расширили 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?