iOS设置导航栏透明

设置透明

// 导航栏变为透明

 [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,搞定,就是这么简单!

你可能感兴趣的:(iOS设置导航栏透明)