关于一些特定的自定义导航栏,tabBar,向上滑动可隐藏的代码

有些按钮在底部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量与固定值做百分比,将其定为透明度。

再说一个,关于UISCrollView的属性,contentSize是可以变化的内容大小;contentOffset是偏移量大小;contentInset是最外围可以扩展的范围。

有时候scrollView会不听话的上下或者左右乱跑。此时可以加一句self.automaticallyAdjustsScrollViewInsets=NO;就ok了

-(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;

}

 

posted @ 2015-07-13 14:33  江南花印孓  阅读(342)  评论(0编辑  收藏  举报