NavigationBar随着滚动视图上下滚动
2016-03-17 本文已影响370人
演绎完美
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是在项目开发中写的一个方法,可能网上有很多实现这种功能的方法,但是这也是自己亲身实践所取得的结果,希望大神们勿喷,谢谢!
有什么不对的地方希望大神们指出!