关于Appearance的问题

关于Appearance的一些性质:

1.只要遵守了UIAppearance协议,还要实现这个方法


 2.哪些属性可以通过appearance设置,只有被UI_APPEARANCE_SELECTOR修饰的属性


3.appearance:只能在控件显示之前设置,才能有作用


4.如果view大规模变化的话,可以使用appearance例如:夜间模式

可能遇到的坑:

比方说 UINavigationBar *bar = [UINavigationBar appearance]用来设置项目中关于navigation bar的一些操作,殊不知,如果我们在项目中调用到了通讯录的话,通讯录也是有navbar的,那我们之前设置的内容可能就会影响到它,所以如果涉及到其他的navbar就不能单纯的用appearance,为了保险,可以采取以下方法:

根据IOS的系统不同的两套方式,也是以navbar为例

#define IOS9 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0 ? YES:NO)

//设置导航栏主题

UINavigationBar *navBar = [UINavigationBar appearance];

if(IOS9)

{

navBar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[self class]]];

}else

{

navBar = [UINavigationBar appearanceWhenContainedIn:self, nil];

}

你可能感兴趣的:(关于Appearance的问题)