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设置UILabel内边距的实例代码

    Swift设置UILabel内边距的实例代码

    有时候,我们需要一个显示文字,又想这些文字与边界之间有自定义的边距,所以下面这篇文章主要给大家介绍了关于Swift设置UILabel内边距的相关资料,需要的朋友可以参考下
    2021-10-10
  • Swift 使用 Observe 监测页面滚动的实现方法

    Swift 使用 Observe 监测页面滚动的实现方法

    这篇文章主要介绍了Swift 使用 Observe 监测页面滚动的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Swift中的HTTP模拟测试示例详解

    Swift中的HTTP模拟测试示例详解

    这篇文章主要为大家介绍了Swift中的HTTP模拟测试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Swift让输入框跟随键盘弹起避免输入输入法挡住输入框问题

    Swift让输入框跟随键盘弹起避免输入输入法挡住输入框问题

    这篇文章主要介绍了Swift让输入框跟随键盘弹起避免输入输入法挡住输入框问题的完美解决方案,本文分步骤给大家介绍的非常详细,需要的朋友可以参考下
    2016-11-11
  • swift中c风格的for循环执行效率

    swift中c风格的for循环执行效率

    这篇文章主要介绍了swift中c风格的for循环执行效率 的相关资料,需要的朋友可以参考下
    2016-07-07
  • Swift初始化器与可选链的使用方法介绍

    Swift初始化器与可选链的使用方法介绍

    初始化器初始化是准备类、结构或枚举的实例以供使用的过程。此过程涉及为该实例上的每个存储属性设置初始值,并执行在新实例准备就绪可供使用之前所需的任何其他设置或初始化,可选链是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能为nil
    2022-08-08
  • swift3.0指纹解锁的实现方法

    swift3.0指纹解锁的实现方法

    这篇文章主要为大家详细介绍了swift3.0指纹解锁的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Swift初始化方法的使用介绍

    Swift初始化方法的使用介绍

    Swift有着超级严格的初始化方法,不仅强化了designated初始化方法的地位,所有不加修饰的init方法都需要在方法中确保非Optional的实例变量被赋值初始化,下面这篇文章主要给大家介绍了关于Swift中初始化init的相关资料,需要的朋友可以参考下。
    2022-08-08
  • Swift项目中利用SWRevealViewController实现侧滑菜单

    Swift项目中利用SWRevealViewController实现侧滑菜单

    这篇文章主要介绍了Swift项目中利用SWRevealViewController实现侧滑菜单,需要的朋友可以参考下
    2015-12-12
  • Swift使用WKWebView在iOS应用中调用Web的方法详解

    Swift使用WKWebView在iOS应用中调用Web的方法详解

    这篇文章主要介绍了Swift使用WKWebView在iOS应用中调用Web的方法详解,使用WKWebView便等于使用和Safari中相同的JavaScript解释器,用来替代过去的UIWebView,需要的朋友可以参考下
    2016-04-04

最新评论