好东西小知识点iOS Developer

侧滑返回实现

2017-08-24  本文已影响57人  jane4321

前两天开发公司的项目,突然发现项目没有侧滑返回的功能。今天研究了一下。在网上找了资料,原来ios7之后系统自带的有这个功能。把self.interactivePopGestureRecognizer.enabled设置成YES就可以了。其实系统默认也是YES。那我们的app为什么侧滑这个操作就没有呢。查了一下原因:原来我们的app自定义了返回按钮。所以侧滑返回按钮失效了。先看一下我们自定义的代码


图一

图一中的代码我现在写在一个继承UIViewController的BaseViewController中,项目里面所有的页面都继承BaseViewController

最后找到了两种方法解决这个问题。

self.interactivePopGestureRecognizer.delegate =  self;

然后实现协议方法代码如下

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    if (self.viewControllers.count <= 1 ) {
        return NO;
    }
    
    return YES;
}

这样侧滑返回的手势就回来了。

self.navigationItem.leftBarButtonItem=barItem;

改成

self.navigationItem.backBarButtonItem = barItem;

这个时候有个问题就是backBarButtonItem的title是会显示出来的如下图


图二

如果想去掉这个title也有两种方法

 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:self.navigationItem.backBarButtonItem.style target:nil action:nil];

这样就把title去掉了效果如下


图三

但是仔细看一下图二和图三的返回按钮这个箭头是不一样的。(图二箭头细一些图三中的箭头粗一些)原来图二中返回的箭头是我用自定义图片而图三中的返回箭头是系统的图片。那这第二种方法我可以自定义吗?答案当然是肯定的。
如果自定义图片我们只需要在BaseNavigationViewController类中加上

  [self.navigationBar setBackIndicatorImage:[UIImage imageNamed:@"nav_back"]];
  [self.navigationBar setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"nav_back"]];

其中@"nav_back"是我自定义图片的名字。

然后运行代码,效果如图


图四

大功告成!

上一篇 下一篇

猜你喜欢

热点阅读