方法一
在当前页面加入下面方法
- (void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
[self.navigationController.navigationBarsetBackgroundImage:[UIImagenew]forBarMetrics:UIBarMetricsDefault];
//去掉导航栏底部的黑线
self.navigationController.navigationBar.shadowImage= [UIImagenew];
}
如果仅设置当前页导航透明,需加入下面方法
- (void)viewWillDisappear:(BOOL)animated{
[superviewWillDisappear:animated];
[self.navigationController.navigationBarsetBackgroundImage:nilforBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBarsetShadowImage:nil];
}
需要注意的是:如果返回上一页的操作有动画,则在上一页出现的时候,导航栏的颜色会逐渐变化
方法二
- (void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
[[self.navigationController.navigationBarsubviews]objectAtIndex:0].alpha=0;
}
仅设置当前页面
- (void)viewWillDisappear:(BOOL)animated{
[superviewWillDisappear:animated];
[[self.navigationController.navigationBarsubviews]objectAtIndex:0].alpha=1;
}
个人感觉:方法二比方法一更为简单,而且效果也好
原文:http://blog.csdn.net/j_r_k/article/details/52806702