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
复制代码

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

执行效果:

目录
相关文章
|
7月前
|
编译器 iOS开发 异构计算
读iOS核心动画笔记
读iOS核心动画笔记
29 0
|
8月前
|
iOS开发
iOS 动画绘制圆形
iOS 动画绘制圆形
45 1
|
6月前
|
JavaScript
Vue框架Element UI教程-出现和隐藏动画(三)
Vue框架Element UI教程-出现和隐藏动画(三)
53 0
|
9月前
|
XML Java 数据格式
HarmonyOS学习路之开发篇—Java UI框架(动画开发)
动画开发 动画是组件的基础特性之一,精心设计的动画使UI变化更直观,有助于改进应用程序的外观并改善用户体验。Java UI框架提供了帧动画、数值动画和属性动画,并提供了将多个动画同时操作的动画集合。
|
11月前
|
定位技术 API 图形学
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
134 1
|
12月前
|
API iOS开发
iOS 核心动画
iOS 核心动画
64 0
|
XML Java API
高级UI系列(三): 自定义UI动画篇
高级UI系列(三): 自定义UI动画篇
99 0
高级UI系列(三): 自定义UI动画篇
|
iOS开发
iOS开发-导航栏标题动画
iOS开发-导航栏标题动画
163 0
iOS开发-导航栏标题动画
|
iOS开发
iOS - 个人中心果冻弹性下拉动画
iOS - 个人中心果冻弹性下拉动画
213 0
iOS - 个人中心果冻弹性下拉动画
|
iOS开发
iOS开发 - 柱状图动态展现动画
iOS开发 - 柱状图动态展现动画
129 0
iOS开发 - 柱状图动态展现动画