ViewController转场动画的切换
2016-01-18 09:19
267 查看
关于转场动画的切换这方便一直想研究好久了,但是奈何都下不了决心, http://blog.csdn.net/hmt20130412/article/details/39079905 这篇博客对于转场动画,我认为讲解得比较详细了
在iOS7中,苹果官方提供了几个关键性的API,我这边再次简单总结下
1.为转场提供动画的API (UIViewControllerAnimatedTransitioning<播放动画>,UIViewControllerInteractiveTransitioning<交互动画,暂时还没研究>)
提供一个很垃圾的转场动画
2.转场代理,个人理解是,在这些代理中提供转场动画的时机,并在里面返回需要播放的转场动画,有三种形式的API<UINavigationControllerDelegate,UIViewControllerTransitioningDelegate,UITabBarControllerDelegate>
以navigation为例子
//然后就OK了的
主要就是这几个关键性的API
在iOS7中,苹果官方提供了几个关键性的API,我这边再次简单总结下
1.为转场提供动画的API (UIViewControllerAnimatedTransitioning<播放动画>,UIViewControllerInteractiveTransitioning<交互动画,暂时还没研究>)
提供一个很垃圾的转场动画
//动画持续的时间 - (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext { return 1.0f; } //动画 - (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext { UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIViewController *fromConntroller = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; if ([transitionContext respondsToSelector:@selector(viewForKey:)]) { UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey]; [[transitionContext containerView] addSubview:toView]; }else { [[transitionContext containerView] addSubview:toViewController.view]; } toViewController.view.alpha = 0.0f; [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{ if (self.type == PushingTypePush) { //fromConntroller.view.transform = CGAffineTransformMakeTranslation(320, 0); fromConntroller.view.transform = CGAffineTransformMakeScale(0.5,0.5 ); toViewController.view.alpha = 1.0; } if (self.type == PushingTypePop) { // toViewController.view.frame = [UIScreen mainScreen].bounds; toViewController.view.transform = CGAffineTransformMakeScale(1,1); toViewController.view.alpha = 1.0f; } } completion:^(BOOL finished) { //申明动画已经结束 这个地方一定一定要记住的 [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; }]; }
2.转场代理,个人理解是,在这些代理中提供转场动画的时机,并在里面返回需要播放的转场动画,有三种形式的API<UINavigationControllerDelegate,UIViewControllerTransitioningDelegate,UITabBarControllerDelegate>
以navigation为例子
//动画转场 - (nullable id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC NS_***AILABLE_IOS(7_0) { LIUAnimationManager *manage = [LIUAnimationManager shareManager]; AnimationTime time = AnimationTimePush; if (operation == UINavigationControllerOperationPush) { time = AnimationTimePush; } if (operation == UINavigationControllerOperationPop) { time = AnimationTimePop; } return [manage transitionWithAnimationType:AnimationTypeCustom AndAnimationTime:time]; }
//然后就OK了的
主要就是这几个关键性的API
相关文章推荐
- 关于swift和OC混编
- 学到的2个新的词 IBDesignable IBInspectable
- 二级指针
- iOS 原生二维码扫描
- 关于block的传值
- 关于UICollectionViewController的header和foot视图
- 关于微信ShareSDK的简单分享
- 每天进步一点点:$为什么会出现在js里呢
- 通过servlet向页面中发送json
- xml解析
- Java之学习笔记(20)-----------类型转换
- 创业公司中运营人员的典型一天是怎么度过的?
- DNS
- python进程池:multiprocessing.pool
- ESXi Host Finder
- Java之学习笔记(19)-----------包装类和匿名类
- 游戏开发中的一些基本方法
- python学习----------面向对象2
- Broadcom SDK编译
- Hadoop错误10_bash: hadoop: command not found问题解决