UiviewController 自定义present 动画 UIViewControllerAnimatedTransitioning
2014-11-24 17:21
344 查看
UIviewController 自定义present 动画
// // PresentAndDismissAnimationController.h // TestTranstation // // Created by lance on 14/11/24. // Copyright (c) 2014年 Lance. All rights reserved. // #import <UIKit/UIKit.h> @interface PresentAndDismissAnimationController : NSObject <UIViewControllerAnimatedTransitioning> @property (nonatomic, assign) BOOL isPresenting; @end
// // PresentAndDismissAnimationController.m // TestTranstation // // Created by lance on 14/11/24. // Copyright (c) 2014年 Lance. All rights reserved. // #import "PresentAndDismissAnimationController.h" @implementation PresentAndDismissAnimationController - (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext { return 0.5; } - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext { /** * dismissing */ if (self.isPresenting) { [self executeDismissAnimation:transitionContext]; } else { [self executePresentationAnimation:transitionContext]; } } /** * present 动画 * * @param transitionContext */ - (void)executePresentationAnimation:(id<UIViewControllerContextTransitioning>)transitionContext { UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIView *containerView = [[UIApplication sharedApplication] keyWindow]; CGRect frame = containerView.bounds; frame.origin.y = -CGRectGetHeight(frame); toViewController.view.frame = frame; [containerView addSubview:toViewController.view]; NSTimeInterval duration = [self transitionDuration:transitionContext]; frame.origin.y = 0; [UIView animateWithDuration:duration animations:^{ toViewController.view.frame = frame; } completion:^(BOOL finished) { [transitionContext completeTransition:YES]; }]; } /** * dismiss 动画 * * @param transitionContext */ - (void)executeDismissAnimation:(id<UIViewControllerContextTransitioning>)transitionContext { UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIView *containerView = [[UIApplication sharedApplication] keyWindow]; CGRect frame = containerView.bounds; frame.origin.y = - CGRectGetHeight(frame); toViewController.view.userInteractionEnabled = YES; [transitionContext.containerView addSubview:toViewController.view]; [transitionContext.containerView addSubview:fromViewController.view]; [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{ toViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeAutomatic; fromViewController.view.frame = frame; } completion:^(BOOL finished) { [transitionContext completeTransition:YES]; }]; } @end
相关文章推荐
- [iOS Swift] 自定义转场动画 UIViewControllerAnimatedTransitioning 报错
- 基于UIViewControllerAnimatedTransitioning自定义转场
- iOS自定义转场详解——UIViewControllerTransitioning的用法
- PresentModel UIViewController 的动画方式
- iOS自定义转场详解01——UIViewControllerTransitioning的用法
- iOS 自定义presentViewController 动画时 出现的问题
- IOS图像8之IOS7.0之后UIViewController自定义转场动画
- 自定义viewController的present切换动画
- IOS 自定义presentModalViewController动画
- 自定义presentViewController的转场动画(Swift)
- UIViewControllerAnimatedTransitioning UIViewControllerTransitionCoordinator 回顾
- 【转】自定义presentviewcontroller和pushviewcontroller转场动画
- 自定义push viewcontroll 的动画 (Custom animation for pushing a UIViewController)
- presentModalViewController 的动画效果
- presentModalViewController 的动画效果
- LayoutAnimationController,补间动画,属性动画,值动画,自定义动画,帧动画
- UIViewController转场动画基础用法(Modal篇)
- viewController自定义转场动画的实现
- 【翻译】自定义 UIViewController Transitions
- presentModalViewController和dismissModalViewControllerAnimated的使用总结