步骤:
创建一个视图
在其.h
文件中声明的属性后添加UI_APPEARANCE_SELECTOR
@property (nonatomic, strong) UIColor *viewColor UI_APPEARANCE_SELECTOR;
在其
.m
文件中初始化时可添加一些默认操作
+ (void)initialize {
myView *myv = [self appearance];
myv.viewColor = [UIColor blueColor];
}
重写其
setter
/getter
方法
- (UIColor *)viewColor {
return self.backgroundColor;
}
- (void)setViewColor:(UIColor *)viewColor1 {
viewColor = viewColor1; // 我在开始添加了@synthesize viewColor;
self.backgroundColor = viewColor;
}
在使用其之前进行设置:控制器添加
[[myView appearance] setViewColor:[UIColor lightGrayColor]]; // 一定要放到addsubView之前
[[UILabel appearanceWhenContainedInInstancesOfClasses:@[[UILabel class]]] setBackgroundColor:[UIColor redColor]];
myView *myv = [[myView alloc] initWithFrame:CGRectMake(10, 20, 250, 40)];
[self.view addSubview:myv];
结果便可以展示出来,view在控制器上颜色为:灰色,如果注释:
[[myView appearance] setViewColor:[UIColor lightGrayColor]];
结果便是初始设置的颜色:蓝色
遗留问题:测试这些东西之前测试了在控制器viewDidLoad
中设置了label
的外观属性。
[[UILabel appearance] setBackgroundColor:[UIColor redColor]];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 200, 200, 50)];
label.text = @"选择颜色";
[self.view addSubview:label];
此外还在storyboard
中添加了一个label
,结果只有storyboard
中的label
被更改了外观颜色,而自己设置的却没有改变?探究ing.