ios 简单实现导航栏渐变效果

1.首先在viewwillappear方法里实现隐藏导航栏底部黑线等操作

-(void)viewWillAppear:(BOOL)animated

{

[superviewWillAppear:animated];

//self.tabBarController.tabBar.hidden=NO;

self.navigationController.navigationBar.barStyle= UIBarStyleBlack;//导航栏的背景色是黑色, 字体为白色[self.navigationController.navigationBarsetShadowImage:[UIImagenew]];//用于去除导航栏的底线,也就是周围的边线//[searchBar resignFirstResponder];


_isOver=NO;

}

2.在viewWillDisappear方法里还原导航,(如果下个界面不要求透明)

-(void)viewWillDisappear:(BOOL)animated

{

[superviewWillDisappear:animated];

[[[self.navigationController.navigationBarsubviews] objectAtIndex:0] setAlpha:1];

_isOver=YES;

}

3.接下来在tableview的滑动事件里控制透明度渐变(isShoperDetail可忽略)//导航栏渐变颜色

- (void)scrollViewDidScroll:(UIScrollView*)scrollView

{


               if(_isOver) {

                  [[[self.navigationController.navigationBarsubviews] objectAtIndex:0] setAlpha:1];

                  return;

             }

              CGFloatoffsetY = scrollView.contentOffset.y;

              if(offsetY >=0) {

                    CGFloatalpha = offsetY/80;

                   [[[self.navigationController.navigationBarsubviews] objectAtIndex:0] setAlpha:alpha];

              }else{

                  [[[self.navigationController.navigationBarsubviews] objectAtIndex:0] setAlpha:0];

                  }

}

4.大家可以发现有个_isOver,这是一个我定义的bool变量,因为我发现在viewWillDisappear里设置还原并不管用,跳出界面后还会调用scrollViewDidScroll:方法,所以定义了个全局的_isOver控制,这样在跳转到下个界面的时候导航栏就不是透明的了

你可能感兴趣的:(ios 简单实现导航栏渐变效果)