站长网_站长创业_站长主页_站长之家_易采站长站

会员投稿 投稿指南 站长资讯通告: IOS实现上滑隐藏NvaigtionBar而下拉则显示效果
搜索:
您的位置: 主页 > 教程 > 软件开发 > IOS开发 > » 正文

IOS实现上滑隐藏NvaigtionBar而下拉则显示效果

来源: 易采站长站

先看看原APP的效果

ios隐藏navigationbar,ios,navigationbar,隐藏navigationbar

实现过程

主要是给view中的滚动视图添加一个KVO来监视它的滑动,再根据它的offset来做一下操作,下面是代码


[myTableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil];

获取tableViewcontentOffset 之后再根据具体需求来实现逻辑判断


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
 if ([object isEqual:myTableView] && [keyPath isEqualToString:@"contentOffset"]) {
  //获取新值旧值
  CGFloat newY = [change[@"new"] CGPointValue].y;
  CGFloat oldY = [change[@"old"] CGPointValue].y;
  float i = newY - oldY;//下拉是新值小于旧值的,所以i<0 是下拉 i>0 是上滑
   NSLog(@"%f",myTableView.contentOffset.y);
  if (myTableView.contentOffset.y > -64 && myTableView.contentOffset.y <= 24) {//边界条件,此处不精确
   if (i <= 0 && _isHide == NO && self.navigationController.navigationBar.frame.origin.y == 20){
    //下拉+bar 已经显示的状态,不再移动
    return;
   }
   _isHide = NO;
   //设置navigationbar 的frame 使他根据tableView来滑动
   self.navigationController.navigationBar.frame = CGRectMake(0, -44 - myTableView.contentOffset.y, self.view.bounds.size.width, 44);
   //控制透明度
   self.navigationController.navigationBar.alpha = -myTableView.contentOffset.y/64;
  }else if (myTableView.contentOffset.y > 24) {
   if (i > 10) {//更改数值大小可以控制触发 navigation bar 的滑动速度
    _isHide = YES;
   }else if(i < -10) {
    _isHide = NO;
   }
  }
  [self.navigationController setNavigationBarHidden:_isHide animated:YES];
 }
}

完成效果图

ios隐藏navigationbar,ios,navigationbar,隐藏navigationbar

总结

其实这个效果实现起来确实没有什么难度,写这个主要是给大家看一下我的实现过程与思路,希望可以帮到大家。如果有疑问可以留言交流,谢谢大家对ASPKU的支持。


注:相关教程知识阅读请移步到IOS开发频道。
最新图文资讯
1 2 3 4 5 6
相关文章列表:
最新文章
易采站长站 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助 -