iOS导航自定义back按钮,制作侧滑返回效果(swift2.2)

提示

如果想要适配Swift3.0,或者Objective-C的自己稍作修改就行。(实在搞不定的可以私聊我...)

正文

iOS的Navigation默认“返回按钮”就是下面的情况看起来很不爽。


iOS导航自定义back按钮,制作侧滑返回效果(swift2.2)_第1张图片
backbtn.png

我想实现的效果:只有“箭头”没有“文字”
Google一番之后,终于找到了答案!

在自定义的UINavigationController中

1. 重写下面的方法
func pushViewController(_ viewController: UIViewController,
               animated animated: Bool)
2. 实现leftBarButtonItem点击事件
代码:
  override func pushViewController(viewController: UIViewController, animated: Bool) {
    // 自定义back按钮
    if viewControllers.count != 0 {
      viewController.navigationItem.leftBarButtonItem =
        UIBarButtonItem(image: UIImage(named: "back.pdf")?.imageWithRenderingMode(.AlwaysOriginal),
                        style: .Done, target: self, action: Selector.backAction)
      // 隐藏tabBar当push
      viewController.hidesBottomBarWhenPushed = true
    }
    super.pushViewController(viewController, animated: animated)
  }

  // back按钮返回的事件
  func back() {
    popViewControllerAnimated(true)
  }

一番折腾之后实现了,朋友拿过把玩了一会儿和我说:你这个App怎么没有侧滑返回功能,你看微信、QQ都有这个功能啊!

我也觉得侧滑返回功能很不错,要搞出来的。之后又各种百度、Google,终于搞出来了,不多说,上代码。


    override func viewDidLoad() {
        super.viewDidLoad()
        // 设置interactivePopGestureRecognizer委托
        interactivePopGestureRecognizer?.delegate = self
    }

// 自定义back按钮,制作侧滑返回效果
extension CustomNavigation: UIGestureRecognizerDelegate {
    
    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
        // 手势何时有效 : 当导航控制器的子控制器个数 > 1就有效
        return self.childViewControllers.count > 1
    }
}

你可能感兴趣的:(iOS导航自定义back按钮,制作侧滑返回效果(swift2.2))