最怕你一生碌碌无为 还安慰自己平凡可贵

iOS开发UI篇—核心动画(转场动画和组动画)

iOS开发UI篇—核心动画(转场动画和组动画)

一、转场动画简单介绍

CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点

UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果

属性解析:

type:动画过渡类型

subtype:动画过渡方向

startProgress:动画起点(在整体动画的百分比)

endProgress:动画终点(在整体动画的百分比)

二、转场动画代码示例

1.界面搭建

2.实现代码

  1. 1 //
  2. 2 // YYViewController.m
  3. 3 // 13-转场动画
  4. 4 //
  5. 5 // Created by apple on 14-6-21.
  6. 6 // Copyright (c) 2014年 itcase. All rights reserved.
  7. 7 //
  8. 8
  9. 9 #import "YYViewController.h"
  10. 10
  11. 11 @interface YYViewController ()
  12. 12 @property(nonatomic,assign) int index;
  13. 13 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
  14. 14
  15. 15 - (IBAction)preOnClick:(UIButton *)sender;
  16. 16 - (IBAction)nextOnClick:(UIButton *)sender;
  17. 17
  18. 18 @end
  19. 19
  20. 20 @implementation YYViewController
  21. 21
  22. 22 - (void)viewDidLoad
  23. 23 {
  24. 24 [super viewDidLoad];
  25. 25 self.index=1;
  26. 26
  27. 27 }
  28. 28
  29. 29 - (IBAction)preOnClick:(UIButton *)sender {
  30. 30 self.index--;
  31. 31 if (self.index<1) {
  32. 32 self.index=7;
  33. 33 }
  34. 34 self.iconView.image=[UIImage imageNamed: [NSString stringWithFormat:@"%d.jpg",self.index]];
  35. 35
  36. 36 //创建核心动画
  37. 37 CATransition *ca=[CATransition animation];
  38. 38 //告诉要执行什么动画
  39. 39 //设置过度效果
  40. 40 ca.type=@"cube";
  41. 41 //设置动画的过度方向(向左)
  42. 42 ca.subtype=kCATransitionFromLeft;
  43. 43 //设置动画的时间
  44. 44 ca.duration=2.0;
  45. 45 //添加动画
  46. 46 [self.iconView.layer addAnimation:ca forKey:nil];
  47. 47 }
  48. 48
  49. 49 //下一张
  50. 50 - (IBAction)nextOnClick:(UIButton *)sender {
  51. 51 self.index++;
  52. 52 if (self.index>7) {
  53. 53 self.index=1;
  54. 54 }
  55. 55 self.iconView.image=[UIImage imageNamed: [NSString stringWithFormat:@"%d.jpg",self.index]];
  56. 56
  57. 57 //1.创建核心动画
  58. 58 CATransition *ca=[CATransition animation];
  59. 59
  60. 60 //1.1告诉要执行什么动画
  61. 61 //1.2设置过度效果
  62. 62 ca.type=@"cube";
  63. 63 //1.3设置动画的过度方向(向右)
  64. 64 ca.subtype=kCATransitionFromRight;
  65. 65 //1.4设置动画的时间
  66. 66 ca.duration=2.0;
  67. 67 //1.5设置动画的起点
  68. 68 ca.startProgress=0.5;
  69. 69 //1.6设置动画的终点
  70. 70 // ca.endProgress=0.5;
  71. 71
  72. 72 //2.添加动画
  73. 73 [self.iconView.layer addAnimation:ca forKey:nil];
  74. 74 }
  75. 75 @end

点击上一张,或者下一张的时候,展示对应的动画效果。

三、组动画简单说明

CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行

属性解析:

animations:用来保存一组动画对象的NSArray

默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间

四、分组动画代码示例

代码:

  1. 1 #import "YYViewController.h"
  2. 2
  3. 3 @interface YYViewController ()
  4. 4 @property (weak, nonatomic) IBOutlet UIView *iconView;
  5. 5
  6. 6 @end
  7. 7
  8. 8 @implementation NJViewController
  9. 9
  10. 10 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
  11. 11 {
  12. 12
  13. 13 // 平移动画
  14. 14 CABasicAnimation *a1 = [CABasicAnimation animation];
  15. 15 a1.keyPath = @"transform.translation.y";
  16. 16 a1.toValue = @(100);
  17. 17 // 缩放动画
  18. 18 CABasicAnimation *a2 = [CABasicAnimation animation];
  19. 19 a2.keyPath = @"transform.scale";
  20. 20 a2.toValue = @(0.0);
  21. 21 // 旋转动画
  22. 22 CABasicAnimation *a3 = [CABasicAnimation animation];
  23. 23 a3.keyPath = @"transform.rotation";
  24. 24 a3.toValue = @(M_PI_2);
  25. 25
  26. 26 // 组动画
  27. 27 CAAnimationGroup *groupAnima = [CAAnimationGroup animation];
  28. 28
  29. 29 groupAnima.animations = @[a1, a2, a3];
  30. 30
  31. 31 //设置组动画的时间
  32. 32 groupAnima.duration = 2;
  33. 33 groupAnima.fillMode = kCAFillModeForwards;
  34. 34 groupAnima.removedOnCompletion = NO;
  35. 35
  36. 36 [self.iconView.layer addAnimation:groupAnima forKey:nil];
  37. 37 }
  38. 38
  39. 39 @end

说明:平移-旋转-缩放作为一组动画一起执行。

执行效果:

iOS转场动画的更多相关文章

  1. iOS 转场动画探究(一)

    什么是转场动画: 转场动画说的直接点就是你常见的界面跳转的时候看到的动画效果,我们比较常见的就是控制器之间的Push和Pop,还有Present和Dismiss的时候设置一下系统给我们的modalTr ...

  2. iOS 转场动画探究(二)

    这篇文章是接着第一篇写的,要是有同行刚看到的话建议从前面第一篇看,这是第一篇的地址:iOS 转场动画探究(一) 接着上一篇写的内容: 上一篇iOS 转场动画探究(一)我们说到了转场要素的第四点,把那个 ...

  3. iOS转场动画封装

    写在前面 iOS在modal 或push等操作时有默认的转场动画,但有时候我们又需要特定的转场动画效果,从iOS7开始,苹果就提供了自定义转场的API,模态推送present和dismiss.导航控制 ...

  4. iOS - 转场动画

    苹果在 iOS7 定制了 ViewController 的切换效果 一 在iOS5和iOS6之前,ViewController的切换主要有4种 Push/Pop,NavigationViewCotnr ...

  5. iOS 转场动画核心内容

    CATransition——转场动画 CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点. ...

  6. iOS转场动画初探

    一般我们就用两种转场push和present present /** 1.设置代理 - (instancetype)init { self = [super init]; if (self) { se ...

  7. IOS 转场动画二和透明控制器视图

    一.透明视图控制器 WJListMenuViewController *VC = [[WJListMenuViewController alloc]init]; VC.modalPresentatio ...

  8. iOS开发UI篇—核心动画(转场动画和组动画)

    转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...

  9. iOS 开发--转场动画

    "用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下:" 本文主讲SWIFT版,OC版在后面会留下Demo下载 在iOS中,在同 ...

随机推荐

  1. #ifndef 与 #program once 的区别(转)

    转自http://hi.baidu.com/hrx20091001/item/ee70f7cc6d036d4ea9ba94e0 #ifndef 与 #program once 的区别 为了避免同一个文 ...

  2. BZOJ 1044: [HAOI2008]木棍分割(二分答案 + dp)

    第一问可以二分答案,然后贪心来判断. 第二问dp, dp[i][j] = sigma(dp[k][j - 1]) (1 <= k <i, sum[i] - sum[k] <= ans ...

  3. 磁盘性能,你可能不知道的IOPS计算方法

    每个I/O 请求到磁盘都需要若干时间.主要是因为磁盘的盘边必须旋转,机头必须寻道.磁盘的旋转常常被称为”rotational delay”(RD),机头的移动称为”disk seek”(DS).一个I ...

  4. Json.Net系列教程 3.Json.Net序列化和反序列化设置

    原文 Json.Net系列教程 3.Json.Net序列化和反序列化设置 上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framewo ...

  5. Nginx工作原理和优化、漏洞(转)

    查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gc ...

  6. perl unicode utf-8 \x转换

    [root@dr-mysql01 ~]# cat x5.pl use Encode; use JSON; use URI::Escape; use LWP::Simple; my $host = &q ...

  7. 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题

    运行平台: Windows 7  64位操作系统 运行环境: IIS 7 编程语言:C# 数据库: 32位的Oracle 10g 运行原因:64位操作系统C#客户端程序通过WCF访问ORACLE数据库 ...

  8. HDOJ 1253 胜利大逃亡(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 思路分析:因为问题需要寻找到达终点的最短的距离(最短的步数),即在状态转换图上需要找出层次最浅的 ...

  9. http://qt-project.org/wiki/Category:Developing_with_Qt::QtWebKit#ff7c0fcd6a31e735a61c001f75426961

    404: Not Found | Qt Project QtWebKit documentation http://dwz.cn/hr2013

  10. linux 进程间信号量管理程序之sem_timedwait使用

    在开发过程中,有三个独立执行的程序模块,三个模块都对sqlite数据库进行读写操作.sqlite在linux共享性较差,所以须要增加相互排斥信号量解决三个模块訪问数据库该问题. 另外,在增加信号量后, ...