// 判斷是否為iOS7
#define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0)
①+ (void)initialize 系統在第一次使用這個類的時候調用(1個類隻會調用一次)
[objc] view plain copy
- + (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操作
[objc] view plain copy
- - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
- {
- viewController.hidesBottomBarWhenPushed = YES;
- [super pushViewController:viewController animated:animated];
- }