UIAppearance proxy for custom objects
All you need is mark a method that participates in the appearance proxy API using MZ_APPEARANCE_SELECTOR. Implement protocol method + (id)appearance, and call applyInvocationTo inside your init or viewDidLoad object method.
@interface MZViewController : UIViewController <MZApperance>
@property (nonatomic,strong) UIColor *customColor MZ_APPEARANCE_SELECTOR;
@property (nonatomic,assign) CGFloat customFloat MZ_APPEARANCE_SELECTOR;
+ (id)appearance;
@end
+ (id)appearance
{
return [MZAppearance appearanceForClass:[self class]];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[[[self class] appearance] applyInvocationTo:self];
NSLog(@"custom color: %@",self.customColor);
NSLog(@"custom float: %f",self.customFloat);
}
[[MZViewController appearance] setCustomColor:[UIColor blackColor]];
[[MZViewController appearance] setCustomFloat:6.0];
Console result will be
2013-08-17 19:59:38.546 MZAppearance[3374:c07] custom color: UIDeviceWhiteColorSpace 0 1
2013-08-17 19:59:38.547 MZAppearance[3374:c07] custom float: 6.000000