zoukankan      html  css  js  c++  java
  • 【iOS 7】使用UIScreenEdgePanGestureRecognizer实现swipe to pop效果

    在iOS 7还没有发布的时候,各种App实现各种的swipe to pop效果,比如。

    在iOS 7上,只要是符合系统的导航结构:[即根视图由导航控制器控制]

    //  Created by wangyuanyuan on 14-9-15.
    //  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
    //
    
    #import "AppDelegate.h"
    #import "FirstViewController.h"
    #import "SecondViewController.h"
    @implementation AppDelegate
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        self.window.backgroundColor = [UIColor whiteColor];
        
        FirstViewController * firstVC = [[FirstViewController alloc]init];
        SecondViewController * secondVC = [[SecondViewController alloc]init];
        
        NSArray * arr = [NSArray arrayWithObjects:firstVC,secondVC, nil];
        
        UITabBarController * tabVC = [[UITabBarController alloc]init];
        tabVC.viewControllers = arr;
        
        UINavigationController * mainVC = [[UINavigationController alloc]initWithRootViewController:tabVC];
        self.window.rootViewController = mainVC;
        
        [self.window makeKeyAndVisible];
        return YES;
    }
    

     就能够有原来漂亮的效果:

    遗憾的是目前项目代码里没有遵循iOS系统的导航结构,使得无法利用这点好处。所以我考虑使用新增的UIScreenEdgePanGestureRecognizer手势:

     1 - (void)viewWillAppear:(BOOL)animated
     2 {
     3     if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
     4         UIScreenEdgePanGestureRecognizer *left2rightSwipe = [[UIScreenEdgePanGestureRecognizer alloc]
     5                                                               initWithTarget:self
     6                                                               action:@selector(handleSwipeGesture:)];
     7         [left2rightSwipe setDelegate:self];
     8         [left2rightSwipe setEdges:UIRectEdgeLeft];
     9         [self.view addGestureRecognizer:left2rightSwipe];
    10     }
    11 
    12 }
    13 
    14 
    15 - (void)handleSwipeGesture:(UIScreenEdgePanGestureRecognizer *)gestureRecognizer
    16 {
    17     [self.navigationController popViewControllerAnimated:YES];
    18 }

    这也实现了相关的返回功能的效果,具体还有相关的手势相关的干扰问题,详情请见博客:http://blog.csdn.net/jasonblog/article/details/16867587

  • 相关阅读:
    NOI2015刷题记录
    [WC2013][UOJ58]糖果公园 莫队算法
    啦啦啦~
    完全平方数
    构建之法
    测试更新
    程序的测试
    程序的封装
    构建之法5.5-6-7章观后感
    给徐侃童鞋的一个汉堡
  • 原文地址:https://www.cnblogs.com/yuanyuandachao/p/3974760.html
Copyright © 2011-2022 走看看