iOS 自定义动画 push/pop动画
来源:互联网 发布:网络视听年度人物 编辑:程序博客网 时间:2024/05/16 04:58
<span style="font-weight: bold; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:14px;">自定义push,pop动画</span></span>
<span style="font-weight: bold; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:14px;"></span></span>
<span style="font-weight: bold; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:14px;">一,将pop,push的animated置为no,将导航控制器view的显现方式加上动画:(相当于自定义动画区覆盖转场动画)</span></span>
<span style="font-weight: bold; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:14px;"></span></span>
1,CATransition *transition = [CATransition animation];//定义一个动画对象
2,transition.duration = 1.0f;//间隔时间
3,transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];//动画的开始与结束的快慢
4, transition.type = kCATransitionFade;//动画效果
5,transition.subtype = KCATransitionFromRight;//动画方向;
6,[navigationController.view.layer addAnimation:transtion forKey :nil];//在需要添加动画的view层上添加此代码
7, setType 的属性有:
1,KCATransitionFade 淡出
2, KCATransitionMoveIn 覆盖原图
3,KCATransitionPush 推出
4,KCATransitionReveal 底部显出来
8,用字符串设置动画类型
1,pageCurl 向上翻一页
2,pageUnCurl 向下翻一页
3, rippleEffect 滴水效果
4,suckEffect 收缩效果,如一块布被抽走
5,cube 立方体效果
6,oglFlip 上下翻转效果
二,执行io7推出的代理方法,自定义转场动画
1,新建一个类继承于NSObject,命名为pushHelper用于push动画,pophelper用于pop动画
使它遵守<UIViewControllerAnimatedTransitioning>
2, 实现该协议的两个方法
1)- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext
<strong><span style="font-size:18px;">{ return 0.3;}//返回的是动画的持续时间,一般是0.2到0.4</span></strong>
<pre code_snippet_id="464571" snippet_file_name="blog_20140905_1_8919567" name="code" class="objc" style="line-height: 24px;"><strong><span style="font-size:18px;">2)这是动画转场的主要方法</span></strong>
<strong><span style="font-size:18px;">- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{ // 获取到目的控制器 UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; // 获取源控制器 UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; // [transitionContext containerView] 是转场容器,如果不把目的控制器的view添加进去,那么动画执行完成之后,toviewcontroller的view就会消失,因为动画就是在这个容器里面完成的,完成之后没有view自然什么都没有了,需要添加,这样便于理解, [[transitionContext containerView] addSubview:toViewController.view]; toViewController.view.alpha = 0.0;</span></strong>
<strong><span style="font-size:18px;">//开始动画 [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{ // 动画效果有很多,这里就展示个左偏移 fromViewController.view.transform = CGAffineTransformMakeTranslation(-320, 0); toViewController.view.alpha = 1.0; } completion:^(BOOL finished) { // 声明过渡结束-->记住,一定别忘了在过渡结束时调用 completeTransition: 告诉系统已经编译完成 [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; }];}</span></strong>
<strong><span style="font-size:18px;">3,实现动画</span></strong>
<strong><span style="font-size:18px;">1,你的fromviewController同样需要遵守<UINavigationControllerDelegate></span></strong>
<pre code_snippet_id="464571" snippet_file_name="blog_20140905_2_4764702" name="code" style="line-height: 16px;"><strong><span style="font-size:18px;">- (id<UIViewControllerAnimatedTransitioning>) navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC{ /** * typedef NS_ENUM(NSInteger, UINavigationControllerOperation) {// * UINavigationControllerOperationNone, * UINavigationControllerOperationPush, * UINavigationControllerOperationPop, * }; */这里的operation可以判断当前的动作是push还是pop if (operation == UINavigationControllerOperationPush) {</span></strong>
<strong><span style="font-size:18px;">(这里返回有遵守了动画协议并在里面编写的动画的类对象) return pushhelper; }else{ return pophelper; }}</span></strong>
<span style="font-size:14px;"></span>
0 0
- iOS 自定义动画 push/pop动画
- IOS 自定义push和pop动画
- ios push pop动画
- 自定义PUSH POP跳转动画
- iOS 自定义转场动画 persent&dismiss , push&pop
- UINavigationController自定义,push和pop动画
- UINavigationController自定义,push和pop动画
- 自定义Push和Pop过渡动画
- NavigationController 自定义pop和push动画
- 自定义导航栏pop动画(push同理)
- iOS 自定义push转场动画
- 【iOS学习笔记 15-11-06】简单自定义navigationcontroller push和pop动画效果
- 自定义NavigationController 的Push 和 Pop过渡动画
- 自定义控制器的转场动画(Push、Pop)
- 自定义控制器的转场动画(Push、Pop)
- 控制器转场动画自定义(1):push/pop的实现
- Swift基础之自定义PUSH和POP跳转动画
- ios7 push/pop转场动画
- STM32标准外设库学习笔记-20150823-阅读stm32f10x.h
- oracle 查看用户所在的表空间
- 【JavaSE】day02_正则表达式 、 Object 、 包装类
- 最长回文 (hdu3068 && poj3974)Palindrome
- WinCE学习相关知识
- iOS 自定义动画 push/pop动画
- mongoDB与sql语句对照表
- Quartz2D二维绘图引擎
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
- JavaScript高级
- (图解)MySQL 5.6 for Windows 解压缩版安装
- 单精度是否为零的判断
- HDU--1114 Piggy-Bank(完全背包)
- hibernate Criteria Query