UIAppearance 协议自定义视图
来源:互联网 发布:阿里云域名证书 编辑:程序博客网 时间:2024/05/23 18:33
在iOS 5以前,自定义原生控件的外观并没有原生支持,因此开发人员感觉很麻烦。开发人员经常面临的问题是修改一个控件所有实例的外观。解决这个问题的正确方法是重写一遍控件。但由于这么做非常费时,一些开发人员开始覆盖或混写一些方法,如drawRect:。
从iOS 5开始,苹果通过两个协议(UIAppearance和UIAppearanceContainer)规范了对许多UIKit控件定制的支持。所有遵循UIAppearance协议的UI控件通过定制都可以呈现各种外观。不仅如此,UIAppearance协议甚至允许开发者基于控件所属的区域指定不同的外观。也就是说,当某个控件包含在特定视图中时,可以指定它的外观(如UIBarButtonItem的tintColor)。也可以获取该控件类的外观代理对象,用该代理定制外观来实现。
+ (instancetype)appearance;
+ (instancetype)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION;
第一个方法是统一全部改,比如你设置UINavBar的tintColor,你可以这样写:[[UINavigationBar appearance] setTintColor:myColor];
第二个方法是当出现在某个类的出现时候才会改变:例如:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil] setTintColor:myPopoverNavBarColor];
注意:全局的设置最好在所有界面初始化前开始设置,否则可能失效。一般写在appDelegate.m文件中。
那么,,怎么确定哪些情况下能够通过UIKit的外观代理来定制所有元素(以及元素中的哪些属性)呢?
有两种方式。老办法是查阅文档,另一个办法是大多数开发人员使用的快捷方式:读头文件。打开对应的UIKit元素的头文件,其中所有带有UI_APPEARANCE_SELECTOR标记的属性都支持通过外观代理来定制。举个例子,UINavigationBar.h中的tintColor属性带有UI_APPEARANCE_SELECTOR标记: @property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR;
例子:
http://blog.csdn.net/shenjx1225/article/details/8552449
- UIAppearance 协议自定义视图
- 使用UIAppearance 协议自定义视图
- 使用UIAppearance协议自定义视图
- 使用UIAppearance协议自定义视图
- 使用UIAppearance协议自定义视图 UI_APPEARANCE_SELECTOR
- IOS自定义UI组件的外观——使用UIAppearance协议自定义视图
- IOS自定义UI组件的外观——使用UIAppearance协议自定义视图()
- IOS自定义UI组件的外观——使用UIAppearance协议自定义视图
- IOS自定义UI组件的外观——使用UIAppearance协议自定义视图
- IOS自定义UI组件的外观——使用UIAppearance协议自定义视图
- iOS 之自定义UI组件的外观——使用UIAppearance协议自定义视图(初识)
- IOS自定义UI组件的外观——使用UIAppearance协议自定义视图
- UIAppearance协议
- ios UIAppearance 协议
- UIAppearance
- UIAppearance
- UIAppearance
- UIAppearance
- iOSOpenDev 环境
- caffe移植到arm平台
- Objective-C static libraries with categories
- CocoaPods 第三方库管理工作
- Codeblocks中文乱码-C语言中文乱码-控制台中文乱码
- UIAppearance 协议自定义视图
- egret学习日记4
- window.onload事件的作用是什么
- AFNetworking2.0 NSHipster翻译
- React Native 之ScrollView轮播图实现
- xcode5 arm64
- (译)Objective-C的动态特性
- 移动学习 AndroidStudio内存优化分析—hprof文件分析
- Objective C运行时(runtime)技术的几个要点总结