// 判断是否为iOS7
#define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0)
①+ (void)initialize 系统在第一次使用这个类的时候调用(1个类只会调用一次)
- + (void)initialize
- {
- // 1.设置导航栏主题
- UINavigationBar *navBar = [UINavigationBar appearance];
- // 设置背景图片
- NSString *bgName = nil;
- if (iOS7) { // 至少是iOS 7.0
- bgName = @"NavBar64";
- navBar.tintColor = [UIColor whiteColor];
- } else { // 非iOS7
- bgName = @"NavBar";
- }
- [navBar setBackgroundImage:[UIImage imageNamed:bgName] forBarMetrics:UIBarMetricsDefault];
- // 设置标题文字颜色
- NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
- attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];
- attrs[NSFontAttributeName] = [UIFont systemFontOfSize:16];
- [navBar setTitleTextAttributes:attrs];
- // 2.设置BarButtonItem的主题
- UIBarButtonItem *item = [UIBarButtonItem appearance];
- // 设置文字颜色
- NSMutableDictionary *itemAttrs = [NSMutableDictionary dictionary];
- itemAttrs[NSForegroundColorAttributeName] = [UIColor whiteColor];
- itemAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:14];
- [item setTitleTextAttributes:itemAttrs forState:UIControlStateNormal];
- if (!iOS7) {
- // 设置按钮背景
- [item setBackgroundImage:[UIImage imageNamed:@"NavButton"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
- [item setBackgroundImage:[UIImage imageNamed:@"NavButtonPressed"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
- // 设置返回按钮背景
- [item setBackButtonBackgroundImage:[UIImage imageNamed:@"NavBackButton"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
- [item setBackButtonBackgroundImage:[UIImage imageNamed:@"NavBackButtonPressed"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
- }
- }
②重写pushViewController,能拦截所有的push操作
- - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
- {
- viewController.hidesBottomBarWhenPushed = YES;
- [super pushViewController:viewController animated:animated];
- }