UIAppearance:统一设置IOS控件

ios5.0以后增加了一个UIAppearance的类,主要有两个方法

+ (id)appearance; 

//主要统一设置app中的全局控件样式,比如我们要把我们项目中的Button的title都设置为“通用”就这样使用:

[[UIButton appearance] setTitle:@"通用" forState:UIControlStateNormal];

如果我们想在某一个单独的类中改变其中的Button的样式,又有了另外一个方法:

+ (id)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION;

//比如我们要在类名如“RootViewController”的类中改变button的标题为"Root",那么我们应该这样使用:

[[UIButton appearanceWhenContainedIn:[RootViewController class], nil] setTitle:@"Root" forState:UIControlStateNormal];

但是API中明确规定了:

/* To participate in the appearance proxy API, tag your appearance property selectors in your header with UI_APPEARANCE_SELECTOR.也就是说如果想让我们的属性可以使用appearance这个方法,我们应该在属性后面加上UI_APPEARANCE_SELECTOR的标识。我们可以看到很多系统自带的控件是带有UI_APPEARANCE_SELECTOR属性的,但是有些却没有,这个时候我们应该这样:

比如在我们的UITableViewCell中,他的

setBackgroundColor
是没有 UI_APPEARANCE_SELECTOR标记的,我们应该自定义一个类继承UITableViewCell

@interface CustomCell : UITableViewCell <UIAppearance> 
@property (nonatomic, weak) UIColor *backgroundCellColor UI_APPEARANCE_SELECTOR;
//注意我们在重写这个类属性的时候加上下面的标记:
UI_APPEARANCE_SELECTOR

然后在.m文件中

@implementation CustomCell 
@synthesize backgroundCellColor;
 -(void)setBackgroundCellColor:(UIColor *)backgroundColor { [super setBackgroundColor:backgroundColor]; }
这样我们在使用的时候就可以全局设置其属性了!

你可能感兴趣的:(UIAppearance)