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

 更新时间:2016年09月01日 14:42:37   投稿:daisy  
这篇文章给大家介绍了如何实现APP上滑时隐藏navigationBar而下拉则又会显示,虽然也是隐藏但是效果和其他完全不一样,因为以前没做过所以试着去实现一下,现在分享给大家,有需要的可以参考借鉴。

先看看原APP的效果

实现过程

主要是给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苹果app应用程序开发者如何获取IPA签名证书详解

    Ios苹果app应用程序开发者如何获取IPA签名证书详解

    这篇文章主要为大家介绍了Ios苹果app应用程序开发者如何获取IPA签名证书详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • IOS开发中如何设计短信验证码防刷机制

    IOS开发中如何设计短信验证码防刷机制

    给大家详细分享一下在IOS的项目开发中如何设计短信验证码防刷机制,已经步骤详解,喜欢的朋友参考下吧。
    2018-02-02
  • iOS应用开发中监听键盘事件的代码实例小结

    iOS应用开发中监听键盘事件的代码实例小结

    这篇文章主要介绍了iOS应用开发中监听键盘事件的代码实例小结,呼出键盘等操作为iOS App中的必备功能,示例代码为传统的Objective-C,需要的朋友可以参考下
    2016-03-03
  • IOS 使用NSAssert()和NSParameterAssert调试程序

    IOS 使用NSAssert()和NSParameterAssert调试程序

    这篇文章主要介绍了IOS 使用NSAssert()和NSParameterAssert调试程序的相关资料,需要的朋友可以参考下
    2017-06-06
  • IOS面试大全之常见算法

    IOS面试大全之常见算法

    之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和分类,这篇文章先给大家分享一下IOS中的常见算法,有需要的可以参考借鉴。
    2016-09-09
  • iOS开发之如何给View添加指定位置的边框线详解

    iOS开发之如何给View添加指定位置的边框线详解

    这篇文章主要给大家介绍了iOS开发之如何给View添加指定位置的边框线的相关资料,给view加边框很容易,重点是如何给指定边框加边框,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • iOS实现转盘效果

    iOS实现转盘效果

    这篇文章主要为大家详细介绍了iOS实现转盘效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • IOS 常见的循环引用总结

    IOS 常见的循环引用总结

    这篇文章主要介绍了IOS 常见的循环引用总结的相关资料,循环引用,指的是多个对象相互引用时,使得引用形成一个环形,导致外部无法真正是否掉这块环形内存。其实有点类似死锁,需要的朋友可以参考下
    2017-03-03
  • iOS Label实现文字渐变色效果

    iOS Label实现文字渐变色效果

    文字渐变色可以使整体的效果更上一个档次,最近在开发中就遇到了这个需求,所以整理出来,下面这篇文章主要给大家介绍了关于iOS Label实现文字渐变色效果的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • iOS判断网络请求超时的方法

    iOS判断网络请求超时的方法

    本篇文章主要介绍了iOS判断网络请求超时的方法,现在分享给大家,也给大家做个参考。感兴趣的小伙伴们可以参考一下。
    2016-12-12

最新评论