Swift NavigationBar隐藏后的右滑手势效果

 更新时间:2017年08月29日 09:26:35   作者:lv灬陈强  
这篇文章主要为大家详细介绍了Swift NavigationBar隐藏后的右滑手势效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

需求

我们在开发中经常遇见这样的需求,就是A视图没有导航,pushB视图后导航栏。然后要求可以使用iOS的系统侧滑返回功能。类似如下的功能:

问题

在处理这个需求的时候,我们一般会遇到两个问题:

右滑返回手势

ios开发中,使用push视图,系统是有默认的侧滑返回上个视图的功能。但是当我们自定义导航栏时,这个手势的事件就没有再触发,此时只要我们重新将代理设置为controller即可。

代码示例:

在BaseViewController中添加如下的代码

 //开启 push视图 右滑手势()
  fileprivate func openSwipe(){
  if(self.navigationController != nil){
    self.navigationController!.interactivePopGestureRecognizer!.delegate = self;
  }

  }

  func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {

    if self.navigationController?.viewControllers.count == 1{
      return false;
    }
    return true;
  }

或者在BaseNavigationController中添加如下代码:

extension BaseNavigationController:UIGestureRecognizerDelegate{

  override func viewDidLoad() {
    super.viewDidLoad()
    self.interactivePopGestureRecognizer?.delegate = self
  }
  func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
    if self.navigationController?.viewControllers.count == 1{
      return false;
    }
    return true;
  }

}

右划返回时导航栏的隐藏问题

oc代码:

-(void)viewWillAppear:(BOOL)animated{
    [self.navigationController setNavigationBarHidden:YES animated:true];
}

-(void)viewWillDisappear:(BOOL)animated{
 [self.navigationController setNavigationBarHidden:NO animated:false];
}

Swift代码:

 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(false);
    self.navigationController?.setNavigationBarHidden(true, animated: true)


  }
  override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated);
    self.navigationController?.navigationBar.isHidden = false;
  }

注意点

我们隐藏导航栏的时候,务必使用animated为true.这样在右划返回视图的时候才不会突兀,否则则会是下面的效果。刚开始滑动,导航栏就全不见了。

这里写图片描述

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Swift中排序算法的简单取舍详解

    Swift中排序算法的简单取舍详解

    对于排序算法, 通常简单的, 为大家所熟知的有, 选择排序, 冒泡排序, 快速排序, 当然还有哈希, 桶排序之类的, 本文仅比较最为常见的选择, 冒泡和快排,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-03-03
  • 如何使用Swift来实现一个命令行工具的方法

    如何使用Swift来实现一个命令行工具的方法

    这篇文章主要介绍了如何使用Swift来实现一个命令行工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Swift高阶函数contains allSatisfy reversed lexicographicallyPrecedes用法示例

    Swift高阶函数contains allSatisfy reversed lexicographicallyPr

    这篇文章主要为大家介绍了Swift高阶函数contains allSatisfy reversed lexicographicallyPrecedes用法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • swift学习文档(笔记)

    swift学习文档(笔记)

    这篇文章主要介绍了学习swift的笔记,swift最近也比较热,需要的朋友可以参考下
    2014-09-09
  • Swift教程之类的析构详解

    Swift教程之类的析构详解

    这篇文章主要介绍了Swift教程之类的析构详解,在一个类的实例被释放之前,析构函数会被调用,本文即讲解了析构过程原理、析构器操作等内容,需要的朋友可以参考下
    2015-01-01
  • Swift心得笔记之控制流

    Swift心得笔记之控制流

    控制流(Control Flow)我不想这么译的。。。我更想叫控制语句,但是想想,这么叫也没错,意指流程控制。大部分用法跟C类似。
    2015-04-04
  • Swift利用CoreData实现一个通讯录存储详解

    Swift利用CoreData实现一个通讯录存储详解

    这篇文章主要给大家介绍了关于Swift利用CoreData实现一个通讯录存储的相关资料,本文是大家学习coreDate的基础问题,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12
  • 简陋的swift carthage copy-frameworks 辅助脚本代码

    简陋的swift carthage copy-frameworks 辅助脚本代码

    下面小编就为大家分享一篇简陋的swift carthage copy-frameworks 辅助脚本代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Swift 并发修改Sendable 闭包实例详解

    Swift 并发修改Sendable 闭包实例详解

    这篇文章主要为大家介绍了Swift 并发修改Sendable 闭包实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • swift 3.0中实现字符串截取、比较的方法示例

    swift 3.0中实现字符串截取、比较的方法示例

    时,为了使用现有的字符串生成一个新的字符串,我们可以使用截取字符串的方法实现。下面这篇文章主要给大家介绍了关于swift 3.0中实现字符串截取的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴。
    2017-10-10

最新评论