美文网首页
iOS页面返回之滑动手势

iOS页面返回之滑动手势

作者: 神SKY | 来源:发表于2017-01-12 18:01 被阅读1100次

现在许多App都有滑动手势让页面返回的效果,在这里先上两个效果图:


效果一
效果二

效果一的实现

要实现效果一,只需要几行代码

首先,找到视图控制器的导航栏控制器UINavigationController
然后,在该类中添加手势的协议,如下:

#import "baseNavigation.h"

@interface baseNavigation ()<UIGestureRecognizerDelegate>

@end

接下来在viewDidLoad中添加如下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
//    获取系统自带滑动手势的target对象
    id target = self.interactivePopGestureRecognizer.delegate;
//    创建滑动手势,并调用系统自带的滑动手势target的方法
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:target action:@selector(handleNavigationTransition:)];
//    设置手势代理
    pan.delegate = self;
//    添加滑动手势
    [self.view addGestureRecognizer:pan];
//    禁止使用系统自带的滑动手势
    self.interactivePopGestureRecognizer.enabled = NO;
}

最后,调用协议里的gestureRecognizerShouldBegin判断一下,如下:

//这个方法是判断手势是否应该触发
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
//    只有非根控制器才开滑动返回,所以再这里判断一下是否为根控制器
    if (self.childViewControllers.count == 1) {
        return NO;
    }
    return YES;

此时,会发现创建手势滑动时所调用的方法会出现警告,可以用如下方法消除:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:target action:@selector(handleNavigationTransition:)];
#pragma clang diagnostic pop

完成如上步骤后,就可以实现效果一的效果


效果一

效果二的实现

效果二是基于效果一实现的,如需要效果二的效果,请先完成效果一

要完成效果二,很简单,只需要在视图控制器中将这个视图控制器的UINavigationBar隐藏,然后自定义一个一模一样的NavigationBar即可(Tips:自定义的UIView的高度为64,状态栏的高度为24)

效果二中的两个页面的UINavigationBar都是隐藏掉的,页面二中的UINavigationBar是小编自定义的视图

效果二

下面是可以了解一下的部分

如果上面的两种效果达不到需求,可以去了解一下小编在GitHub上看到的这个第三方库,附上GitHub地址:https://github.com/forkingdog/FDFullscreenPopGesture
可以用cocoapods安装:

pod 'FDFullscreenPopGesture', '~> 1.1'

最后,希望这篇文章对各位看官们有所帮助。

相关文章

  • iOS开发中 手势滑动返回时 tabbar跟屏幕滑动出现

    ios开发中 tabbar一级页面手势滑动返回时这样写:

  • iOS 手势返回

    iOS 手势返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏返回

    iOS 全屏返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 右滑返回

    iOS 右滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回详解

    iOS 侧滑返回详解 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流A...

  • iOS 侧滑返回详解

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS 右滑返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • BBGestureBack 手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

网友评论

      本文标题:iOS页面返回之滑动手势

      本文链接:https://www.haomeiwen.com/subject/loxjbttx.html