我们扩展了 UILabel 以便能够在我们的应用程序中为给定标签类型的所有用途应用标准字体和颜色。例如。
@interface UILabelHeadingBold : UILabel
@end
在我们的 AppDelegate 中,我们像这样应用字体和颜色
[[UILabelHeadingBold appearance] setTextColor:<some color>];
[[UILabelHeadingBold appearance] setFont:<some font>];
在我们的 XIB 中添加 UILabel 时,我们现在可以选择 UILabelHeadingBold 类型的类,它可以按预期工作。标签以正确的字体和颜色显示,如我们的 AppDelegate 中所指定。
但是,如果我们以编程方式创建标签,例如。
UILabelHeadingBold *headingLabel = [[UILabelHeadingBold alloc] initWithFrame:CGRectMake(10, 10, 100, 30)];
[self.mainView addSubview:headingLabel];
UILabel 没有应用预期的字体/颜色。我们必须手动应用这些属性。
有没有办法让 UIAppearance 对以编程方式创建的 UI 元素生效,或者它只在 XIB 中使用时才有效?