@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不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)