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

ios – 在程序上创建的UILabel上的UIAppearance不起作用,第1张

概述我们扩展了UILabel,以便在我们的应用程序中为给定标签类型的所有用途应用标准字体和颜色.例如. @interface UILabelHeadingBold : UILabel@end 在AppDelegate中,我们应用这样的字体和颜色 [[UILabelHeadingBold appearance] setTextColor:<some color>];[[UILabelHeadingB 我们扩展了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中添加时,它可以工作.

总结

以上是内存溢出为你收集整理的ios – 在程序上创建的UILabel上的UIAppearance不起作用全部内容,希望文章能够帮你解决ios – 在程序上创建的UILabel上的UIAppearance不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1111669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存