微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 在程序上创建的UILabel上的UIAppearance不起作用

我们扩展了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中使用时才起作用?

解决方法

从苹果文档:

To support appearance customization,a class must conform to the
UIAppearanceContainer protocol and relevant accessor methods must be
marked with UI_APPEaraNCE_SELECTOR.

例如在UINavigationBar.h中,tintColor标有UI_APPEaraNCE_SELECTOR

@property(nonatomic,retain) UIColor *tintColor UI_APPEaraNCE_SELECTOR;

但是在UILabel.h中,您可以看到textColor和font属性没有被标记为UI_APPEaraNCE_SELECTOR,但是在Interface Builder中添加时,它可以工作.

原文地址:https://www.jb51.cc/iOS/336562.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐