d.e*_*nis 50 iphone cocoa-touch appearance objective-c ios5
在2011年的技术讲座上,我看到了关于新UIAppearance 协议的演讲.目前还没有很多文档.我将简要总结一下我记得要解释我的问题来自哪里:
关于UIAppearance:
到目前为止,您必须在所有应用程序视图控制器中自定义每个导航栏(工具栏等)属性.使用新的外观属性,您只能在应用程序中的所有导航栏的一个位置执行此操作.例如:如果要自定义导航栏背景图像,可以这样做:
[[UINavigationBar appearance] setBackgroundImage:
[UIImage imageNamed:@"MyImageName"] forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
这将设置应用程序中所有导航栏的背景图像.随着barMetrics您可以指定是否要还用在横向模式影像与否.
如果要指定仅在某些视图控制器中应用的外观,则文档中还有一个方法可通过指定对象的位置来控制该方法:
[[UIBarButtonItem appearanceWhenContainedIn:
[ABPeoplePickerNavigationController class], nil] setTintColor:myNavBarColor];
Run Code Online (Sandbox Code Playgroud)
另外值得一提的是,如果您有单个自定义实例,与您的外观设置不同,那么实例将不受外观代理的影响.
一些问题:
a)我如何知道类的哪些属性与外观属性一起使用?例如,因为UITableView符合UIAppearance协议我认为我可以做类似的事情
[[UITableView appearance] setBackgroundColor:mytableViewColor];
Run Code Online (Sandbox Code Playgroud)
操纵我所有表视图的背景颜色,但我不能!
b)是否有可以使用外观属性操作的所有类的列表?
c)在什么时候调用外观定制?我希望在运行时更改抛出外观属性,但不幸的是,更改没有发生.
Dav*_*ong 37
a)我如何知道类的哪些实例使用外观属性?例如,因为UITableView符合UIAppearance协议,我认为我可以做类似的事情
您查看类的标题(以及所有超类的标题).UI_APPEARANCE_SELECTOR支持与其相邻的任何方法与UIAppearance代理一起使用.
[[UITableView appearance] setBackgroundColor:mytableViewColor];
Run Code Online (Sandbox Code Playgroud)
该backgroundColor物业不与装饰UI_APPEARANCE_SELECTOR在UIView.h.因此,在技术上不支持与外观代理一起使用.它可能会工作,但(鉴于缺乏方法装饰)不能保证.
来自UIAppearance Protocol Reference:
要支持外观自定义,类必须符合
UIAppearanceContainer协议,并且必须标记相关的访问器方法UI_APPEARANCE_SELECTOR.
(注意" 和相关的访问者方法必须标记......"[强调添加])
b)是否有可以使用外观属性操作的所有属性的列表?
是否有单个页面显示与外观代理一起使用的每个setter?我不知道一个,也没有办法在运行时构建列表.
c)在什么时候调用外观定制?我希望在运行时更改抛出外观属性,但不幸的是,更改没有发生.
您可以在执行期间的任何时候使用外观代理.在下次这些视图-layoutSubviews调用其方法之前,更改不会应用于受影响的视图.
| 归档时间: |
|
| 查看次数: |
19183 次 |
| 最近记录: |