待完成任务 —— appearance意义及功能使用方法

来源:互联网 发布:矮个子 穿着 知乎 编辑:程序博客网 时间:2024/06/08 04:54

使用UIAppearance 协议去获取一个类的appearance代理。
你可以通过向其发送一个外观改变消息来改造一个类的所有实例的外观。

注意:iOS仅在一个view进入到一个window时才会应用其appearance更改操作。当一个view已经在window时,它不会发生任何的界面属性理性。如果想更改当前在window上的view的appearance需要先将其从视图层级上移除,然后再把它添加上去即可。

有两种方式可以为一个对象改造其appearance

  • 为所有实例
  • 为一个容器类中的所有实例

1 . 想去改造一个类的所有实例的appearance,需要使用appearance方法去获得这个类的appearance的代理。如, 去改变UINavigationBarbar 的所有实例的背景色调:

[[UINavigationBar appearance] setBarTintColor:myNavBarBackgroundColor];

2 .如果想改变一个容器类中的某一个类的实例,或是在视图层级上的实例,需要使用appearanceWhenContainedIn: 去获得这个类的代理,如,想去更改bar 上的buttons 的 appearance属性,基于它们 都在导航栏上。

[[UIBarButtonItem appearanceWhenContainedIn:[uinavigationBar class],nil] setBackgroundImage:myNavBarButtonBackgroundImage forState:state barMetrics:metrics];[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil]        setBackgroundImage:myPopoverNavBarButtonBackgroundImage forState:state barMetrics:metrics];[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil]        setBackgroundImage:myToolbarButtonBackgroundImage forState:state barMetrics:metrics];[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], [UIPopoverController class], nil]        setBackgroundImage:myPopoverToolbarButtonBackgroundImage forState:state barMetrics:metrics];

其实说白了appearance就是为了方便批量进行相应控件修改操作。

0 0