有些按钮在底部SCrollView滑动的时候却是不动的,原理是加在self.view上,再用 bringSubviewToFront 函数讲其层级调为最上层。导航栏位置的按钮就用 [self.navigationController.navigationBar bringSubviewToFront:btn2];
进入一个页面如果想让导航栏透明,消失。注意,如果在导航栏透明状态下推出一个新的页面,导航栏的透明属性会带过去。
这个时候需要在新页面的viewWillApper里边重新定义导航栏属性。------>>>>这个问题困扰了我三天。思维僵化了,没有变通。将问题交给王旭东以后,五分钟,就想到了这个解决方法。一提,我就明白了。只是有时候思维一旦僵化,很难做出这种方向上的转变,所以根本不会去想在第二个页面做调转,只想着在第一个页面推送之前处理好。
-(void)viewDidAppear:(BOOL)animated{
self.navigationController.navigationBar.alpha=0.01;
self.navigationController.navigationBar.translucent=YES;
}
要注意在生命周期结束的时候改回来,不然隐藏属性会带到下个页面。
-(void)viewWillDisappear:(BOOL)animated{
self.navigationController.navigationBar.alpha=1.0;
self.navigationController.navigationBar.translucent=NO;
}
对于上下滑动,导航栏渐变为不透明的动画,其实是一个scrollView的代理函数。原理是通过计算scrollView的偏移y量与固定值做百分比,将其定为透明度。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGFloat f=scrollView.contentOffset.y;
self.navigationController.navigationBar.alpha=f/150.0;
UIButton *btn=(UIButton *)[self.view viewWithTag:10];
btn.alpha=1.0-f/150.0;
}