提示
如果想要适配Swift3.0,或者Objective-C的自己稍作修改就行。(实在搞不定的可以私聊我...)
正文
iOS的Navigation默认“返回按钮”就是下面的情况看起来很不爽。
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
}
}











网友评论