通过appearance设置app主题

背景

最近在看开源中国的源代码,里面有一些自己不熟悉的知识,记录下来最为总结

参考资料

oschina源码
http://git.oschina.net/oschina/iphone-app
TintColor解析
http://blog.kingiol.com/blog/2014/01/09/ios7-day-by-day-day6-tint-color/

oschina源码分析

    //再plist文件中设置View controller-based status bar appearance 为 NO才能起效
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    
    //导航条上标题的颜色
    NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
    [[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];
    
    //导航条上UIBarButtonItem颜色
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    
    //TabBar选中图标的颜色,默认是蓝色
    [[UITabBar appearance] setTintColor:[UIColor colorWithHex:0x15A230]];
    //TabBarItem选中的颜色
    [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor colorWithHex:0x15A230]} forState:UIControlStateSelected];
    
    //导航条的背景颜色
    [[UINavigationBar appearance] setBarTintColor:[UIColor navigationbarColor]];
    
    //TabBar的背景颜色
    [[UITabBar appearance] setBarTintColor:[UIColor titleBarColor]];
    
    [UISearchBar appearance].tintColor = [UIColor redColor];
    //当某个class被包含在另外一个class内时,才修改外观。
    [[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setCornerRadius:14.0];
    [[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setAlpha:0.6];
    
    
    UIPageControl *pageControl = [UIPageControl appearance];
    pageControl.pageIndicatorTintColor = [UIColor colorWithHex:0xDCDCDC];
    pageControl.currentPageIndicatorTintColor = [UIColor grayColor];
    
    [[UITextField appearance] setTintColor:[UIColor nameColor]];
    [[UITextView appearance]  setTintColor:[UIColor nameColor]];

你可能感兴趣的:(通过appearance设置app主题)