博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
核心动画(转场动画和组动画)
阅读量:6985 次
发布时间:2019-06-27

本文共 3204 字,大约阅读时间需要 10 分钟。

核心动画(转场动画和组动画)

一、转场动画简单介绍

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

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

属性解析:

type:动画过渡类型

subtype:动画过渡方向

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

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

 

二、转场动画代码示例

1.界面搭建

2.实现代码

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 @end19 20 @implementation YYViewController21 22 - (void)viewDidLoad23 {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 *)event11 {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

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

执行效果:

转载于:https://www.cnblogs.com/crash-wu/p/4797335.html

你可能感兴趣的文章
CSS(颜色_字体)
查看>>
Java并发面试,了解这些就不会被坑了
查看>>
用Ubuntu和RStudio Server搭建一个R语言的云平台
查看>>
Redis命令——事务
查看>>
Python的Django框架的运行方式及处理流程
查看>>
too many open files
查看>>
IDEA中找不到程序包和找不到符号
查看>>
json 遍历 jsonobject jsonarray
查看>>
NutzWk 5.2.3 发布,Java 微服务分布式开发框架
查看>>
Win32编程点滴5 - 响应ActiveX控件的事件
查看>>
基于Firebase搭建酷炫的博客
查看>>
Disruptor源码解析 + 实战
查看>>
同步、更新、下载Android Source & SDK from 国内镜像站
查看>>
(4opencv)CLR基本原理和如何运用于GOCW
查看>>
儿科医生集团小苹果儿科获5000万元B轮融资,中信资本医疗基金领投
查看>>
python-包及日志模块使用
查看>>
BugkuCTF 你必须让他停下
查看>>
每日文献:2018-01-19
查看>>
【New Feature】基于OSS的WORM特性,提供云上数据合规存储
查看>>
Redis事务的分析及改进
查看>>