天天看點

【深入淺出IOS開發】彩票-NavigationController

// 判斷是否為iOS7

#define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0)

①+ (void)initialize  系統在第一次使用這個類的時候調用(1個類隻會調用一次)

[objc]  view plain copy

  1. + (void)initialize  
  2. {  
  3.     // 1.設定導航欄主題  
  4.     UINavigationBar *navBar = [UINavigationBar appearance];  
  5.     // 設定背景圖檔  
  6.     NSString *bgName = nil;  
  7.     if (iOS7) { // 至少是iOS 7.0  
  8.         bgName = @"NavBar64";  
  9.         navBar.tintColor = [UIColor whiteColor];  
  10.     } else { // 非iOS7  
  11.         bgName = @"NavBar";  
  12.     }  
  13.     [navBar setBackgroundImage:[UIImage imageNamed:bgName] forBarMetrics:UIBarMetricsDefault];  
  14.     // 設定标題文字顔色  
  15.     NSMutableDictionary *attrs = [NSMutableDictionary dictionary];  
  16.     attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];  
  17.     attrs[NSFontAttributeName] = [UIFont systemFontOfSize:16];  
  18.     [navBar setTitleTextAttributes:attrs];  
  19.     // 2.設定BarButtonItem的主題  
  20.     UIBarButtonItem *item = [UIBarButtonItem appearance];  
  21.     // 設定文字顔色  
  22.     NSMutableDictionary *itemAttrs = [NSMutableDictionary dictionary];  
  23.     itemAttrs[NSForegroundColorAttributeName] = [UIColor whiteColor];  
  24.     itemAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:14];  
  25.     [item setTitleTextAttributes:itemAttrs forState:UIControlStateNormal];  
  26.     if (!iOS7) {  
  27.         // 設定按鈕背景  
  28.         [item setBackgroundImage:[UIImage imageNamed:@"NavButton"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  
  29.         [item setBackgroundImage:[UIImage imageNamed:@"NavButtonPressed"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];  
  30.         // 設定傳回按鈕背景  
  31.         [item setBackButtonBackgroundImage:[UIImage imageNamed:@"NavBackButton"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  
  32.         [item setBackButtonBackgroundImage:[UIImage imageNamed:@"NavBackButtonPressed"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];  
  33.     }  
  34. }  

②重寫pushViewController,能攔截所有的push操作

[objc]  view plain copy

  1. - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated  
  2. {  
  3.     viewController.hidesBottomBarWhenPushed = YES;  
  4.     [super pushViewController:viewController animated:animated];  
  5. }