【深入浅出IOS开发】彩票-NavigationController

本文介绍如何针对iOS的不同版本自定义UINavigationBar及UIBarButtonItem的样式,包括背景图片、文字颜色等,并展示了如何通过重写pushViewController方法来实现对所有推送操作的拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 判断是否为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.     // 设置背景图片  
  7.     NSString *bgName = nil;  
  8.     if (iOS7) { // 至少是iOS 7.0  
  9.         bgName = @"NavBar64";  
  10.         navBar.tintColor = [UIColor whiteColor];  
  11.     } else { // 非iOS7  
  12.         bgName = @"NavBar";  
  13.     }  
  14.     [navBar setBackgroundImage:[UIImage imageNamed:bgName] forBarMetrics:UIBarMetricsDefault];  
  15.       
  16.     // 设置标题文字颜色  
  17.     NSMutableDictionary *attrs = [NSMutableDictionary dictionary];  
  18.     attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];  
  19.     attrs[NSFontAttributeName] = [UIFont systemFontOfSize:16];  
  20.     [navBar setTitleTextAttributes:attrs];  
  21.       
  22.     // 2.设置BarButtonItem的主题  
  23.     UIBarButtonItem *item = [UIBarButtonItem appearance];  
  24.     // 设置文字颜色  
  25.     NSMutableDictionary *itemAttrs = [NSMutableDictionary dictionary];  
  26.     itemAttrs[NSForegroundColorAttributeName] = [UIColor whiteColor];  
  27.     itemAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:14];  
  28.     [item setTitleTextAttributes:itemAttrs forState:UIControlStateNormal];  
  29.       
  30.     if (!iOS7) {  
  31.         // 设置按钮背景  
  32.         [item setBackgroundImage:[UIImage imageNamed:@"NavButton"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  
  33.         [item setBackgroundImage:[UIImage imageNamed:@"NavButtonPressed"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];  
  34.           
  35.         // 设置返回按钮背景  
  36.         [item setBackButtonBackgroundImage:[UIImage imageNamed:@"NavBackButton"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  
  37.         [item setBackButtonBackgroundImage:[UIImage imageNamed:@"NavBackButtonPressed"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];  
  38.     }  
  39. }  

②重写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. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值