iOS CoreAnimation 核心动画
一 介绍
一组非常强大的动画处理API
直接作用在CALAyer上,并非UIView(UIView动画)
CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类
属性:
duration:持续时间
repeatCount:重复次数
repeatDuration:重复时间
timingFunction:运行节奏
keyPath:指定CALayer的某个属性为keyPath,并对CALayer的这个属性值进行修改,达到动画效果
fillMode:决定当前对象在非active时间段的行为,比如动画开始之前以及结束之后
beginTime:延迟执行时间 CACurrentMediaTime() + 延迟时间
removedOnCompletion:动画执行完毕后是否从图层移除
二 子类介绍
1. CAMediaTiming: protocol
2. CAProperyAnimation:不能直接使用,要想创建动画对象,应该使用其子类:CABasicAnimation(基础动画),CAKeyframeAnimation(帧动画)
1. CABasicAnimation:基础动画
只能从一个数值(fromValue)变到另一个(toValue)
使用:
一 实例化
使用方法animationWithKeyPath:
对 CABasicAnimation进行实例化,并指定Layer的属性作为关键路径进行注册。
二 设定动画的属性
三 设置是否让动画在结束时恢复到初始状态
只需设置removedOnCompletion
、fillMode
两个属性就可以了。
//防止动画结束后回到初始状态
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeBackwards;
四 添加动画
使用方法addAnimation将动画实例添加到控件的layer上
完整代码:
//实例化,绑定layer的属性作为关键路径进行注册
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
//所改变属性的起始值和结束值
animation.fromValue = [NSNumber numberWithFloat:1.0f];
animation.toValue = [NSNumber numberWithFloat:0.0f];
//动画结束时是否执行逆动画
animation.autoreverses = YES;
animation.duration = 0.2;
animation.repeatCount = 4;
//设置动画的速度变化 渐进
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
//防止动画结束后回到初始状态
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeBackwards; animation.delegate = self;
//添加动画
[sender.layer addAnimation:animation forKey:nil];
2.CAKeyFrameAnimation:关键帧动画
使用一个NSArray保存这些数值
values:即NSArray对象,里边元素被称为“关键帧(keyframe)”,动画对象会在指定的时间duration内,一次显示values内的每一个关键帧
keyTimes:对应关键帧的对应时间点,取值从0-1
path:让层随路径移动,只对CALayer的anchorPoint和position起作用,若设置path,则values会被忽略
3.CATransition:转场动画
实现了将控制器的视图推入屏幕的动画效果
type:动画类型
subtype:过渡方向
startProgress:起点
endProgress:终点
4.CAAnimationGroup:组动画
组中所有动画对象可以同时并发运行
animations:保存一组动画对象的NSArray
参考链接:http://www.cnblogs.com/wendingding/p/3801036.html
iOS CoreAnimation 核心动画的更多相关文章
- iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程
iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...
- IOS QuartzCore核心动画框架
IOS QuartzCore核心动画框架 核心动画框架 使用核心动画需要引入的框架:#import CALayer: CoreAnimation CALayer就是UIView上的图层,很多的CALa ...
- iOS学习——核心动画
iOS学习——核心动画 1.什么是核心动画 Core Animation(核心动画)是一组功能强大.效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用.核心动画所在的位置如下图 ...
- iOS学习——核心动画之Layer基础
iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- iOS之核心动画(Core Animation)
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core ...
- iOS基础 - 核心动画
一.核心动画 l 核心动画基本概念 l 基本动画 l 关键帧动画 l 动画组 l 转场动画 l Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事 ...
- CoreAnimation 核心动画 / CABasicAnimation/ CAKeyframeAnimation
- (void)createBaseAnimation{ //基础动画 CABasicAnimation *animation = [CABasicAnimation animation]; anim ...
- iOS:核心动画之基本动画CABasicAnimation
基本动画,是CAPropertyAnimation的子类 属性说明: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 动画过程说明: 随着动画的进行 ...
随机推荐
- class Solution(object): def fizzBuzz(self, n): a = [] i = 1 while(i <= n): if(i%15 == 0): a.append("FizzBuzz") elifleetcode day_01
412. Fizz Buzz Write a program that outputs the string representation of numbers from 1 to n. But fo ...
- [译]Android调整图像大小的一些方法
翻译自 某大神在Stack Overflow里的自问自答 (一般我们将Bitmap翻译为位图,但为了更好理解,在本文中我将它翻译成图像): 我们在开发的时候,经常需要从服务器中加载图像到客户端中,但有 ...
- column css3 列宽
column-count 属性规定元素应该被分隔的列数: div { -moz-column-count:3; /* Firefox */ -webkit-column-count:3; /* Saf ...
- 【Docker】Docker主机为什么ip nets 查不到网络空间
创建Docker容器后本来应该有新的命名空间(如果有独立网络的话),那么可以通过 ip netns 命令查看到命名空间,但是实际上却看不到. 查过资料才发现,ip netns 只能查看到 /var/r ...
- Power of Three
Given an integer, write a function to determine if it is a power of three. Follow up:Could you do it ...
- RF执行顺序
case: 按照定义的上下位置顺序执行,通过Ctrl+上下方向键,来改变执行次序. 包含suite的目录:按字母顺序. suite: 按字母顺序执行.可以加01__xxx.txt这样的前缀来控制顺序.
- jquery中使用serialize() 序列化表单时 中文乱码问题
序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 1 原因:.serialize()自动调用了encodeURICo ...
- 【python】类(资料+疑惑)
1.http://python-china.org/t/77 有关method binding的理解 2.[Python] dir() 与 __dict__,__slots__ 的区别 3.Descr ...
- NTC 热敏电阻温度计算公式
Rt = R *EXP(B*(1/T1-1/T2))这里T1和T2指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度:其中T2=(273.15+25)Rt 是热敏电阻在T1温度下的阻值: ...
- java中的集合
集合比数组的优势: 1.集合可以存任意类型的变量,长度是可变的 2.数组只能存同一类型的变量,长度是固定的 3.集合中只能存对象 List集合 : 接口 提供公有的方法 特有的方法: 1.List中 ...