| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
mip33
10年前发布

一个3D翻转的转场动画:KYPushTransition

一个3D翻转的转场动画,可以手势百分比控制。

Usage

以下代码全在第一个视图控制器中实现:

进入第一个控制器。在跳转之前,设置后一个控制器的代理,比如我用Segue的话,就在-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender里设置后一个控制器的代理为前一个控制器,并且让后一个控制器实现手势返回的交互:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{        SecondViewController *secVC = (SecondViewController *)segue.destinationViewController;      secVC.transitioningDelegate = self;      popInteractive = [KYPopInteractiveTransition new];      [popInteractive addPopGesture:secVC];  }

然后分两种情况:

1)如果只是一个VC present 到另一个 VC,那么你需要实现UIViewControllerTransitioningDelegate中的两个协议,分别对应present和dismiss,返回对应的动画:

- (id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source{        KYPushTransition *flip = [KYPushTransition new];        return flip;  }    - (id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed{      KYPopTransition *flip = [KYPopTransition new];      return flip;    }

然后是手势交互的方法,比较常用的情况是返回上一个VC采用手势,所以这里只实现了dismiss的方法:

- (id <UIViewControllerInteractiveTransitioning>)interactionControllerForDismissal:(id <UIViewControllerAnimatedTransitioning>)animator{      return popInteractive.interacting ? popInteractive : nil;    }

2)如果你是用UINavigationController控制两个VC,那么需要实现UINavigationControllerDelegate中的:

- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController                                     animationControllerForOperation:(UINavigationControllerOperation)operation                                                  fromViewController:(UIViewController *)fromVC                                                    toViewController:(UIViewController *)toVC{      if (operation == UINavigationControllerOperationPush) {            KYPushTransition *flip = [KYPushTransition new];          return flip;        }else if (operation == UINavigationControllerOperationPop){            KYPopTransition *flip = [KYPopTransition new];          return flip;        }else{          return nil;      }  }

UINaviagtionController控制VC的情况下,UINavigationControllerDelegate也有相应的手势交互的协议方法:

- (id <UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController *)navigationController                            interactionControllerForAnimationController:(id <UIViewControllerAnimatedTransitioning>) animationController{          return popInteractive.interacting ? popInteractive : nil;

项目主页:http://www.open-open.com/lib/view/home/1429510711666

 本文由用户 mip33 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1429510711666.html
Objective-C开发 KYPushTransition