关于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];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容