UIAppearance与UI_APPEARANCE_SELEC

作者: ac41d8480d04 | 来源:发表于2016-09-26 13:20 被阅读1400次

在iOS 5之后,出现了两个Protocol,分别是UIAppearance 以及UIAppearanceContainer,通过这两个协议,我们可以在开发过程中规范对于UI的定制工作。

使用这两个Protocol,不仅可以简单更改定制各种外观样式,甚至还能制定出现在特定位置的时候才允许设置不同的UI外观特性。

UIAppearance Protocol主要使用一下两个方法:

+ (instancetype)appearance;
+ (instancetype)appearanceWhenContainedIn:(nullable Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION NS_DEPRECATED_IOS(5_0, 9_0, "Use +appearanceWhenContainedInInstancesOfClasses: instead") __TVOS_PROHIBITED;

iOS 9之后,第二个方法替换为:
+ (instancetype)appearanceWhenContainedInInstancesOfClasses:(NSArray<Class <UIAppearanceContainer>> *)containerTypes NS_AVAILABLE_IOS(9_0);

使用之后,返回值接受者为使用此方法的实例,很多的UIView或者UIControl的属性都支持此项操作,比如 UIButton的TitleColor

- (void)setTitleColor:(nullable UIColor *)color forState:(UIControlState)state UI_APPEARANCE_SELECTOR; // default if nil. use opaque white

以及UIview的BackgroundColor

@property(nullable, nonatomic,copy)            UIColor          *backgroundColor UI_APPEARANCE_SELECTOR; // default is nil. Can be useful with the appearance proxy on custom UIView subclasses.

上面两个例子,大家可以看出,只有标记了UI_APPEARANCE_SELECTOR宏定义的方法,才会遵循UIAppearance Protocol,并允许使用协议方法。

使用范例:

[[UINavigationBar appearance] setBarTintColor:myNavBarBackgroundColor];

或者

[[UIBarButtonItem appearanceWhenContainedIn:[NSArray arrayWithObject:[UINavigationBar class]]
   setBackgroundImage:[UIImage imageNamed:@"imageName"] forState:state barMetrics:metrics];

只要是遵循了UIAppearanceContainer Protocol的类,比如UINavigatorBarUIPopOverController等,都是此容器类,可以使用协议中的方法。

参考资料:

相关文章

  • UIAppearance与UI_APPEARANCE_SELEC

    在iOS 5之后,出现了两个Protocol,分别是UIAppearance 以及UIAppearanceCont...

  • UIAppearance

    今天想聊的是UIKit: UIAppearance UIAppearance是什么? UIAppearance实际...

  • App主题

    UIAppearance Tutorial

  • 主题方案

    主题方案 方案一:通过原生接口UIAppearance(废弃) 凡是遵循UIAppearance协议的控件都可以在...

  • ios注意问题

    1.使用UIAppearance注意的问题 如果不熟悉可以点击了解, UIAppearance它的目的就是设置全局...

  • Appearance

    UIAppearance是一个协议 UIView默认已经遵守了这个协议 来看看UIAppearance都有什么方法...

  • UIAppearance

    一、UIApplication 1.简单介绍 1). UIApplication对象是应用程序的象征,一个UIAp...

  • UIAppearance

    1,系统控件的使用及注意实现 注意:1,+appearance 在设置之后的控件才起作用,这就是为什么在控制器中...

  • UIAppearance

    http://www.cnblogs.com/T15053781465/p/5654772.html http:/...

  • UIAppearance

    这两天学习的时候看到了UIAppearance这个协议 一开始不知道是干什么的 就点进去看了看; 自定义类的所有实...

网友评论

    本文标题:UIAppearance与UI_APPEARANCE_SELEC

    本文链接:https://www.haomeiwen.com/subject/jmrqyttx.html