设置透明
// 导航栏变为透明
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:0];
// 让黑线消失的方法
self.navigationController.navigationBar.shadowImage=[UIImage new];
变色动画
在NavigationBar下插入一个view,执行动画改变这个view的透明度即可。
CGRect frame =self.navigationController.navigationBar.frame;
alphaView = [[UIViewalloc] initWithFrame:CGRectMake(0, -20, frame.size.width, frame.size.height+20)];
alphaView.backgroundColor= [UIColorblueColor];
alphaView.userInteractionEnabled=NO;
[self.navigationController.navigationBarinsertSubview: alphaView atIndex:0];
Push到第二个界面不透明
viewDidLoad里设置不透明即可:
self.navigationController.navigationBar.translucent=NO;
这里有个问题,当从第二个界面POP返回第一个界面时,导航栏变成不透明了。只需要在第一个界面viewWillAppear里设置:
self.navigationController.navigationBar.translucent=YES;
为防止右滑返回但还是停留在第二个界面时,导航栏出现黑条,在第一个界面viewDidDisappear最好设置:
self.navigationController.navigationBar.translucent=NO;
OK,搞定,就是这么简单!