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控制,这样在跳转到下个界面的时候导航栏就不是透明的了