iOS 实现ScrollView 上滑隐藏Navigationb

作者: 乐Coding | 来源:发表于2016-01-21 14:21 被阅读12461次

转载请注明原文链接:http://www.jianshu.com/p/b43113256ce1

我司产品🐶突然喜欢上了知乎简书的的那种上滑加载更多时隐藏NavigationBar,下拉时显示的那种效果。那些阅读类APP需要沉浸式体验隐藏导航栏无可厚非,我就纳闷一个P2P类软件你隐藏个毛线!废话少说,技术很好实现几行代码的事。

在包含TableView或者ScrollView的.m文件中加入以下代码:

在页面即将消失时显示NavigationBar,让下一个页面显示时NavigationBar显示状态:

//滑动隐藏导航栏 LiXingLe
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];

    self.navigationController.navigationBarHidden = NO;

}

实现ScrollView的代理:

#pragma mark 滑动隐藏导航栏
//滑动隐藏导航栏 LiXingLe

-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
    [self.navigationController setNavigationBarHidden:velocity.y>0 animated:YES];
}

现在运行一下如果上滑的时候顶部没有变黑就OK了,如果NavigationBar 隐藏后顶部变黑,加上下面的代码,
viewDidLoad中添加:

//滑动隐藏导航栏 LiXingLe

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])

      self.edgesForExtendedLayout = UIRectEdgeNone;

觉得不错,下方记得点个“喜欢”哟!


更多iOS、Swift、逆向等开发精彩文章可以关注我的微信公众号乐Coding
你也可以扫描下方二维码关注我们。

qrcode_for_gh_af22362bf4bb_258.jpg

相关文章

网友评论

  • Young__Li:厉害了👍,感谢分享~~~
  • 乐Coding:觉得不错,上方记得点个“喜欢”哟:smiley:
  • TinaAndNike:隐藏了之后,系统侧滑不能用了,怎么办呢😥
  • 布袋的世界:楼主的代码好强大,用Swift的写了一遍,Thanks!

    override func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

    print("\(velocity.y)")

    if(velocity.y>0)

    {

    self.navigationController?.setNavigationBarHidden(true, animated: true)


    }

    else

    {

    self.navigationController?.setNavigationBarHidden(false, animated: true)


    }



    }

    override func viewWillDisappear(_ animated: Bool)
    {

    super.viewWillDisappear(animated)
    self.navigationController?.isNavigationBarHidden = false
    }
  • 8e957eb79c3e:请问下,手势返回的时候返回一半又回来了前一页的导航栏显示在这一页了要怎么解决?都没有碰到这个问题吗
    乐Coding:提供个思路
    ```
    extension HomeViewController : UINavigationControllerDelegate{
    internal func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
    let needHiden = viewController is HomeViewController || viewController is DMUserInfoViewController
    self.navigationController?.setNavigationBarHidden(needHiden, animated: true)
    }

    }
    ```
  • 魔法黛:你不怕你司产品:dog:看这篇文章?:joy:
    乐Coding:@67525b706f33 我司产品🐶不咬人,哈哈
  • 死神一护:请问是不是Swift中已经没有edgesForExtendedLayout这个全局方法了?
  • 6aefd1beab60:[self.navigationController setNavigationBarHidden:velocity.y>0 animated:YES];
    乐Coding:@兴兴点灯 :+1:
  • JanzTam:期待分享更多小技巧

本文标题:iOS 实现ScrollView 上滑隐藏Navigationb

本文链接:https://www.haomeiwen.com/subject/pyvlkttx.html