iOS ----- navigationController.navigationBar 设置背景透明

以前一直没用过带透明的导航栏图片,现在项目要用到这样的。以为放上图片就是自动透明了

可是,发现透明那部竟然是黑的。无论怎么clearcolor 都不行。百度了很多页也没有查到可以用的方法。

最后在http://stackoverflow.com 找到一个关键点  :

viewDidLoad

。导航自定义图片设置这里也顺便贴出来吧


[cpp]  view plain copy print ?
  1. - (void) setNavBarImg:(UINavigationBar *)navBar  
  2. {  
  3. #define kSCNavBarImageTag 10  
  4.       
  5.     if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])  
  6.     {  
  7.         //if iOS 5.0 and later  
  8.         [navBar setBackgroundImage:ThemeImageName(@"bg_nav@2x") forBarMetrics:UIBarMetricsDefault];  
  9.     }  
  10.     else  
  11.     {  
  12.         UIImageView *imageView = (UIImageView *)[navBar  viewWithTag:kSCNavBarImageTag];  
  13.         [imageView setBackgroundColor:ClearColor];  
  14.         if (imageView == nil)  
  15.         {  
  16.             imageView = [[UIImageView alloc] initWithImage:  
  17.                          ThemeImageName(@"bg_nav@2x")];  
  18.             [imageView setTag:kSCNavBarImageTag];  
  19.             [navBar insertSubview:imageView atIndex:0];  
  20.         }  
  21.     }  
  22. }  

如果你的图片是有透明的。如果你在百度里搜。那你真的要搜死了。。


方法:


[cpp]  view plain copy print ?
  1.     [self.navigationController.navigationBar setTranslucent:YES];  
  2. //    为什么要加这个呢,shadowImage 是在ios6.0以后才可用的。但是发现5.0也可以用。不过如果你不判断有没有这个方法,  
  3. //    而直接去调用可能会crash,所以判断下。作用:如果你设置了上面那句话,你会发现是透明了。但是会有一个阴影在,下面的方法就是去阴影  
  4.     if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)])  
  5.     {  
  6.         [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];  
  7.     }  
  8. //    以上面4句是必须的,但是习惯还是加了下面这句话  
  9.     [self.navigationController.navigationBar setBackgroundColor:ClearColor];

你可能感兴趣的:(IOS开发)