UIAppearance не влияет на UILabels, созданные программно

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

17
задан Cœur 10 September 2017 в 05:59
поделиться