转发自:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/16306_12.html

 

IOS UIVIEW layer动画 总结,有需要的朋友可以参考下。

这是我搜索的所有动画效果,感谢前辈在网上分享.

  1. //翻页效果动画 左边
  2. [UIView beginAnimations:@"animation" context:nil];
  3. [UIView setAnimationDuration:1.0f];
  4. [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:YES];
  5. [UIView commitAnimations];
  6.  
  7. //翻页效果动画 右边
  8. [UIView beginAnimations:nil context:NULL];
  9. [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
  10. [UIView setAnimationDuration:0.35f];
  11. [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];
  12. [UIView commitAnimations];
  13.  
  14. //lar动画,从上到下模糊
  15. CATransition *animation = [CATransition animation];
  16. [animation setDuration:2.0f];
  17. [animation setFillMode:kCAFillModeForwards];
  18. [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
  19. [animation setType:kCATransitionPush];
  20. [animation setSubtype:kCATransitionFromBottom];
  21. [self.navigationController.navigationBar.layer addAnimation:animation forKey:nil];
  22.  
  23. //折页效果动画
  24. [UIView animateWithDuration:0.35f animations:^
  25. {
  26. /**
  27. * @see http://donbe.blog.163.com/blog/static/138048021201061054243442/
  28. *
  29. * @param transform 形变属性(结构体),可以利用这个属性去对view做一些翻转或者缩放.详解请猛戳↑URL.
  30. *
  31. * @method valueWithCATransform3D: 此方法需要一个CATransform3D的结构体.一些非详细的讲解可以看下面的URL
  32. *
  33. * @see http://blog.csdn.net/liubo0_0/article/details/7452166
  34. *
  35. */
  36.  
  37. self.navigationController.view.transform = CGAffineTransformMakeScale(0.001, 0.001);
  38.  
  39. CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
  40.  
  41. // 向右旋转45°缩小到最小,然后再从小到大推出.
  42. animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.70, 0.40, 0.80)];
  43.  
  44. /**
  45. * 其他效果:
  46. * 从底部向上收缩一半后弹出
  47. * animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0)];
  48. *
  49. * 从底部向上完全收缩后弹出
  50. * animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1.0, 0.0, 0.0)];
  51. *
  52. * 左旋转45°缩小到最小,然后再从小到大推出.
  53. * animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.50, -0.50, 0.50)];
  54. *
  55. * 旋转180°缩小到最小,然后再从小到大推出.
  56. * animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0.1, 0.2, 0.2)];
  57. */
  58.  
  59. animation.duration = 2;
  60. animation.repeatCount = 1;
  61. [self.navigationController.view.layer addAnimation:animation forKey:nil];
  62.  
  63. }
  64. completion:^(BOOL finished)
  65. {
  66. [UIView animateWithDuration:0.35f animations:^
  67. {
  68. self.navigationController.view.transform = CGAffineTransformMakeScale(1.0, 1.0);
  69. }];
  70. }];
  71.  
  72. //从下到上模糊推出
  73. CATransition *animation = [CATransition animation];
  74. [animation setDuration:1.0f];
  75. [animation setType:kCATransitionReveal];
  76. [animation setSubtype:kCATransitionFromTop];
  77. [animation setFillMode:kCAFillModeForwards];
  78. [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
  79.  
  80. [self.navigationController.navigationBar.layer addAnimation:animation forKey:nil];
  81.  
  82. //旋转动画
  83. CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
  84. rotationAnimation.toValue = [NSNumber numberWithFloat:(2 * M_PI) * 2];
  85. rotationAnimation.duration = 0.35f;
  86. rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
  87.  
  88. CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
  89. scaleAnimation.toValue = [NSNumber numberWithFloat:0.0];
  90. scaleAnimation.duration = 0.35f;
  91. scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
  92.  
  93. CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
  94. animationGroup.duration = 2.35f;
  95. animationGroup.autoreverses = YES;
  96. animationGroup.repeatCount = 1;
  97. animationGroup.animations =[NSArray arrayWithObjects:rotationAnimation, nil];
  98. [self.navigationController.view.layer addAnimation:animationGroup forKey:@"animationGroup"];
  99.  
  100. [UIView commitAnimations];
  101. CATransition *animation = [CATransition animation];
  102. [animation setDuration:0.8];
  103. /* 各种动画效果*/
  104. /* type类型 */ /*这里要注意不用私有方法*/
  105. /*
  106. pageCurl 向上翻一页
  107. pageUnCurl 向下翻一页
  108. rippleEffect 滴水效果
  109. suckEffect 收缩效果,如一块布被抽走
  110. cube 立方体效果
  111. oglFlip 上下翻转效果
  112. */
  113.  
  114. [animation setType: kCATransitionReveal];
  115. /* 动画方向*/
  116. /* SubType类型 */
  117. /*
  118. kCATransitionFade淡出
  119. kCATransitionMoveIn覆盖原图
  120. kCATransitionPush推出
  121. kCATransitionReveal底部显出来
  122. 也可以有四种类型:
  123. kCATransitionFromRight;
  124. kCATransitionFromLeft
  125. kCATransitionFromTop;
  126. kCATransitionFromBottom
  127. */
  128. [animation setSubtype: kCATransitionFromBottom];
  129. /* 动画的开始与结束的快慢*/
  130. [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
  131.  
  132. [self.navigationController.self.view.layer addAnimation:animation forKey:nil];
  133.  
  134. //这里应用场景是已经有2个viewController插入要的self.view上
  135. /*
  136. [self.view insertSubview:self.blueController.view atIndex:0];
  137. [self.view insertSubview:self.yellowController.view atIndex:1];
  138. */
  139.  
  140. [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
  141. //UIView开始动画,第一个参数是动画的标识,第二个参数附加的应用程序信息用来传递给动画代理消息
  142.  
  143. [UIView beginAnimations:@"animation" context:nil];
  144. //动画持续时间
  145. [UIView setAnimationDuration:1.25];
  146. //设置动画的回调函数,设置后可以使用回调方法
  147. [UIView setAnimationDelegate:self];
  148. //设置动画曲线,控制动画速度
  149. [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
  150. //设置动画方式,并指出动画发生对象
  151. [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.navigationController.view cache:YES];//cache
  152. /*cache
  153. 如果是YES,那么在开始和结束图片视图渲染一次并在动画中创建帧;否则,视图将会在每一帧都渲染。例如缓存,你不需要在视图转变中不停的更新,你只需要等到转换完成再去更新视图。
  154. 讨论
  155. */
  156. //设置动画重复
  157. [UIView setAnimationRepeatCount:5.0];
  158. //提交UIView动画 结束动画
  159. [UIView commitAnimations];
  160.  
  161. //开始一个动画块
  162. [UIView beginAnimations:@"animationID" context:nil];
  163. //设置动画块中的动画持续时间(用秒)
  164. [UIView setAnimationDuration:1.5f];
  165. //设置动画块中的动画属性变化的曲线
  166. [UIView setAnimationCurve:UIViewAnimationCurveLinear];
  167. /*变化曲线还有
  168. ( UIViewAnimationCurveEaseInOut, // slow at beginning and end
  169. UIViewAnimationCurveEaseIn, // slow at beginning
  170. UIViewAnimationCurveEaseOut, // slow at end
  171. UIViewAnimationCurveLinear)
  172. */
  173.  
  174. //设置动画块中的动画效果是否自动重复播放。
  175. [UIView setAnimationRepeatAutoreverses:NO];
  176.  
  177. //设置动画在动画模块中的重复次数
  178. //setAnimationRepeatCount:
  179. //设置动画消息的代理。
  180. [UIView setAnimationDelegate:self];
  181.  
  182. /* UIView动画的代理方法
  183. // [UIView
  184. // //设置消息给动画代理当动画开始的时候
  185. // setAnimationWillStartSelector:@selector(resizeAnimationWillStart:context:)];
  186. // [UIView
  187. // //设置消息给动画代理当动画停止的时候
  188. // setAnimationDidStopSelector:@selector(resizeAnimationDidStop:finished:context:)];
  189. //将效果作用在指定的view
  190. */
  191. [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:YES];
  192. /*
  193. 效果还有(UIViewAnimationTransitionFlipFromLeft,UIViewAnimationTransitionFlipFromRight,UIViewAnimationTransitionCurlUp,UIViewAnimationTransitionCurlDown)
  194. */
  195. //显示在最前面
  196. [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
  197. //结束动画
  198. [UIView commitAnimations];

IOS UIVIEW layer动画 总结(转)的更多相关文章

  1. ios中layer动画和UIView动画代码总结

    kCATransitionFade淡出  kCATransitionMoveIn覆盖原图  kCATransitionPush推出  kCATransitionReveal底部显出来    pageC ...

  2. ios uiview封装动画(摘录)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  3. ios UIView常用动画效果

    一 //调用 1 2 3 4 5 6 if(m_viewScenario.superview == nil)<br>{     m_viewScenario.alpha = 1.0;    ...

  4. iOS开发UI篇—核心动画(UIView封装动画)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  5. IOS开发-UIView之动画效果的实现方法(合集)

    http://www.cnblogs.com/GarveyCalvin/p/4193963.html 前言:在开发APP中,我们会经常使用到动画效果.使用动画可以让我们的APP更酷更炫,最重要的是优化 ...

  6. iOS学习——核心动画之Layer基础

    iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...

  7. iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

    UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...

  8. 用layer添加UIView的动画

    项目有时会遇到用UIView 添加动画的情况,这里我觉得在layer上添加动画比较好,因为可以详细地设定动画属性,方便理解 下面是一个旋转动画: -(void)roundBtnAction:(id)s ...

  9. iOS - UIView 动画

    1.UIView 动画 核心动画 和 UIView 动画 的区别: 核心动画一切都是假象,并不会真实的改变图层的属性值,如果以后做动画的时候,不需要与用户交互,通常用核心动画(转场). UIView ...

随机推荐

  1. [改善Java代码]推荐覆写toString方法

    建议49: 推荐覆写toString方法 为什么要覆写toString方法,这个问题很简单,因为Java提供的默认toString方法不友好,打印出来看不懂,不覆写不行,看这样一段代码: public ...

  2. [改善Java代码]警惕自增的陷阱

    建议7: 警惕自增的陷阱 老师就说:自增有两种形式,分别是i++和++i,i++表示的是先赋值后加1,++i是先加1后赋值,这样理解了很多年也没出现问题,直到遇到如下代码,我才怀疑我的理解是不是错了: ...

  3. 并查集(UVA 1106)

    POINT: 把每个元素看成顶点,则一个简单化合物就是一条无向边,若存在环(即k对组合中有k种元素),则危险,不应该装箱,反之,装箱: 用一个并查集维护连通分量集合,每次得到一种化合物(x, y)时检 ...

  4. ExecutorService.invokeAny()和ExecutorService.invokeAll()的使用剖析

    ExecutorService是JDK并发工具包提供的一个核心接口,相当于一个线程池,提供执行任务和管理生命周期的方法.ExecutorService接口中的大部分API都是比较容易上手使用的,本文主 ...

  5. 快速启动软件之 Rolan ,你真的会用?

    2015.2.14 很高兴 Rolan 这个软件至今还在更新,并且愈发完善,UI 的设计和功能上的改进都给了我不小的震撼. 如今的 Rolan ,可以对比一下 2014 年的图,变化真的很大有木有: ...

  6. python方式实现scoket通信

    要想明白这个网络通信还真的是离不开实现它实现流程图,看明白了大体很多都知道,觉得这个博主画的不错,地址是 http://www.cnblogs.com/wangcq/p/3520400.html 1. ...

  7. iframe仿Ajax上传文件

    利用iframe框架完成文件上传 前端页面 <!doctype html> <html lang="en"> <head> <meta c ...

  8. 关于java.lang.NullPointerException: Module 'null' not found.的问题

    在用eclipse做struts1项目时,配置都ok了.可是一运行就报java.lang.NullPointerException: Module 'null' not found.错. 代码如下: ...

  9. Linux 命令 - uniq: 通知或忽略重复行

    给定一个已排好序的文件,uniq 会删除重复行并将结果输出到标准输出中.uniq 通常与 sort 结合使用以删除 sort 输出内容中的重复行. 命令格式 uniq [OPTION]... [INP ...

  10. 随机提取N条记录[多种数据库方法]

    随机提取10条记录的例子: Sql server: select top 10 * from 表 order by newid() Access: SELECT top 10 * FROM 表 ORD ...