https://github.com/kittenyang/kypushtransition
一个3D翻转的转场动画
https://github.com/kittenyang/kypushtransition
Last synced: 2 months ago
JSON representation
一个3D翻转的转场动画
- Host: GitHub
- URL: https://github.com/kittenyang/kypushtransition
- Owner: KittenYang
- Created: 2015-04-18T13:31:03.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2015-08-18T17:34:39.000Z (almost 10 years ago)
- Last Synced: 2025-03-20T13:26:19.213Z (2 months ago)
- Language: Objective-C
- Homepage:
- Size: 3.08 MB
- Stars: 103
- Watchers: 4
- Forks: 16
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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 )animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source{
KYPushTransition *flip = [KYPushTransition new];return flip;
}- (id )animationControllerForDismissedController:(UIViewController *)dismissed{
KYPopTransition *flip = [KYPopTransition new];
return flip;
}
```然后是手势交互的方法,比较常用的情况是返回上一个VC采用手势,所以这里只实现了dismiss的方法:
```
- (id )interactionControllerForDismissal:(id )animator{
return popInteractive.interacting ? popInteractive : nil;
}
```###2)如果你是用UINavigationController控制两个VC,那么需要实现`UINavigationControllerDelegate`中的:
```
- (id )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 )navigationController:(UINavigationController *)navigationController
interactionControllerForAnimationController:(id ) animationController{
return popInteractive.interacting ? popInteractive : nil;```
点击[博客介绍](http://kittenyang.com/3dfliptransition/)阅读详细实现细节