iOS转场动画
iOS开发UI篇—核心动画(转场动画和组动画)
iOS开发UI篇—核心动画(转场动画和组动画)
一、转场动画简单介绍
CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点
UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果
属性解析:
type:动画过渡类型
subtype:动画过渡方向
startProgress:动画起点(在整体动画的百分比)
endProgress:动画终点(在整体动画的百分比)
二、转场动画代码示例
1.界面搭建
2.实现代码

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

点击上一张,或者下一张的时候,展示对应的动画效果。
三、组动画简单说明
CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行
属性解析:
animations:用来保存一组动画对象的NSArray
默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间
四、分组动画代码示例
代码:

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

说明:平移-旋转-缩放作为一组动画一起执行。
执行效果:
iOS转场动画的更多相关文章
- iOS 转场动画探究(一)
什么是转场动画: 转场动画说的直接点就是你常见的界面跳转的时候看到的动画效果,我们比较常见的就是控制器之间的Push和Pop,还有Present和Dismiss的时候设置一下系统给我们的modalTr ...
- iOS 转场动画探究(二)
这篇文章是接着第一篇写的,要是有同行刚看到的话建议从前面第一篇看,这是第一篇的地址:iOS 转场动画探究(一) 接着上一篇写的内容: 上一篇iOS 转场动画探究(一)我们说到了转场要素的第四点,把那个 ...
- iOS转场动画封装
写在前面 iOS在modal 或push等操作时有默认的转场动画,但有时候我们又需要特定的转场动画效果,从iOS7开始,苹果就提供了自定义转场的API,模态推送present和dismiss.导航控制 ...
- iOS - 转场动画
苹果在 iOS7 定制了 ViewController 的切换效果 一 在iOS5和iOS6之前,ViewController的切换主要有4种 Push/Pop,NavigationViewCotnr ...
- iOS 转场动画核心内容
CATransition——转场动画 CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点. ...
- iOS转场动画初探
一般我们就用两种转场push和present present /** 1.设置代理 - (instancetype)init { self = [super init]; if (self) { se ...
- IOS 转场动画二和透明控制器视图
一.透明视图控制器 WJListMenuViewController *VC = [[WJListMenuViewController alloc]init]; VC.modalPresentatio ...
- iOS开发UI篇—核心动画(转场动画和组动画)
转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...
- iOS 开发--转场动画
"用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下:" 本文主讲SWIFT版,OC版在后面会留下Demo下载 在iOS中,在同 ...
随机推荐
- #ifndef 与 #program once 的区别(转)
转自http://hi.baidu.com/hrx20091001/item/ee70f7cc6d036d4ea9ba94e0 #ifndef 与 #program once 的区别 为了避免同一个文 ...
- BZOJ 1044: [HAOI2008]木棍分割(二分答案 + dp)
第一问可以二分答案,然后贪心来判断. 第二问dp, dp[i][j] = sigma(dp[k][j - 1]) (1 <= k <i, sum[i] - sum[k] <= ans ...
- 磁盘性能,你可能不知道的IOPS计算方法
每个I/O 请求到磁盘都需要若干时间.主要是因为磁盘的盘边必须旋转,机头必须寻道.磁盘的旋转常常被称为”rotational delay”(RD),机头的移动称为”disk seek”(DS).一个I ...
- Json.Net系列教程 3.Json.Net序列化和反序列化设置
原文 Json.Net系列教程 3.Json.Net序列化和反序列化设置 上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framewo ...
- Nginx工作原理和优化、漏洞(转)
查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gc ...
- perl unicode utf-8 \x转换
[root@dr-mysql01 ~]# cat x5.pl use Encode; use JSON; use URI::Escape; use LWP::Simple; my $host = &q ...
- 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题
运行平台: Windows 7 64位操作系统 运行环境: IIS 7 编程语言:C# 数据库: 32位的Oracle 10g 运行原因:64位操作系统C#客户端程序通过WCF访问ORACLE数据库 ...
- HDOJ 1253 胜利大逃亡(bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 思路分析:因为问题需要寻找到达终点的最短的距离(最短的步数),即在状态转换图上需要找出层次最浅的 ...
- http://qt-project.org/wiki/Category:Developing_with_Qt::QtWebKit#ff7c0fcd6a31e735a61c001f75426961
404: Not Found | Qt Project QtWebKit documentation http://dwz.cn/hr2013
- linux 进程间信号量管理程序之sem_timedwait使用
在开发过程中,有三个独立执行的程序模块,三个模块都对sqlite数据库进行读写操作.sqlite在linux共享性较差,所以须要增加相互排斥信号量解决三个模块訪问数据库该问题. 另外,在增加信号量后, ...