NavigationBar随着滚动视图上下滚动

1.导航栏必须在滚动视图控制器中

2.设置一个属性,表示视图向上还是向下

3.调用UIScrollViewDelegate中的代理方法-(void)scrollViewDidScroll:scrollView

//UIScrollView的代理方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{    //定义起初 Y 轴偏移量
    static float newy = 0;
    static float oldy = 0;
    //获取当前滚动视图的contentOffset.y
    newy = self.tableView.contentOffset.y;
    //判断滚动视图向上还是向下
    if (newy != oldy ) {
        if (newy > oldy) {
            self.scrollUporDown = YES;
        }else if(newy < oldy){
            self.scrollUporDown = NO;
        }
        oldy = newy;
    }
    //定义初始的navigationBar的位置
    if (newy == -60) {
        [UIView animateWithDuration:1 animations:^{          
         self.navigationController.navigationBar.frame = CGRectMake(0, 20, kWidth, 40);
        }];
    }else{
        if (_scrollUporDown == YES) {
            [UIView animateWithDuration:1 animations:^{
                self.navigationController.navigationBar.frame = CGRectMake(0, -40, kWidth, 40);
            }];
        }
        else if (_scrollUporDown == NO) {
            [UIView animateWithDuration:0.5 animations:^{
                self.navigationController.navigationBar.frame = CGRectMake(0, 20, kWidth, 40);
            }];
        }
    }
}

本demo是在项目开发中写的一个方法,可能网上有很多实现这种功能的方法,但是这也是自己亲身实践所取得的结果,希望大神们勿喷,谢谢!

有什么不对的地方希望大神们指出!

你可能感兴趣的:(NavigationBar随着滚动视图上下滚动)