(一二一)核心动画基础

核心动画基于QuartzCore框架,只能用于CALayer,可以实现3D效果,它在子线程中执行动画,不会阻塞主线程。

要实现核心动画,主要使用CABasicAnimation实现单步动画、使用CAKeyframeAnimation实现帧动画。

动画的主要属性有duration、keyPath、value、repeatCount等。

动画执行完毕后默认会复位,要取消复位,需要以下两行代码:

anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;

要实现单步动画,使用CABasicAnimation对象即可:

利用keyPath指定操作的属性,使用toValue指定变化到的值。

CABasicAnimation *anim = [CABasicAnimation animation];
anim.duration = 0.5f;
anim.keyPath = @"transform";
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0, 1, 0)];
anim.repeatCount = 100;
// 动画默认会复位,要取消复位,首先禁止动画移除,然后设置保持新位置。
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;
[_blueView.layer addAnimation:anim forKey:nil];

要实现帧动画,通过CAKeyframeAnimation对象,通过多个value指定动作,或者通过贝塞尔曲线指定路径都可以:

多个value:

CAKeyframeAnimation *anim2 = [CAKeyframeAnimation animation];
anim2.duration = 0.5f;
anim2.keyPath = @"position";
anim2.repeatCount = 100;
NSValue *p1 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(50, 0, 0)];
NSValue *p2 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)];
NSValue *p3 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-50, 0, 0)];
NSValue *p4 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)];
anim2.values = @[p1,p2,p3,p4];
anim2.removedOnCompletion = NO;
anim2.fillMode = kCAFillModeForwards;

路径:

CAKeyframeAnimation *anim2 = [CAKeyframeAnimation animation];
anim2.duration = 0.5f;
anim2.keyPath = @"position";
anim2.repeatCount = 100;
anim2.removedOnCompletion = NO;
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100,100,200,200)];
anim2.path = path.CGPath;
anim2.fillMode = kCAFillModeForwards;

不要忘记把动画添加到layer。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-11 12:25:49

(一二一)核心动画基础的相关文章

iOS开发UI篇—核心动画(基础动画)

iOS开发UI篇—核心动画(基础动画) 一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但

核心动画基础动画(CABasicAnimation)关键帧动画

1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATransition) 2.CAAnimation:核心动画的基础类,不能直接使用,负责动画运行时间,速度的控制,本身实现了CAMediaTiming协议 3.CAPropertyAnimation:属性动画也是基类(通过属性进行动画设置,注意是动画属性),不能直接使用. CABasicAnimation:

核心动画(基础动画)

一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但在实质上,图层的属性值还是动画执行前的初

核心动画(基础动画)-转

一.简单介绍   CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值  随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐的变为toValue.  如果 fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但在实质上,图层的属性值还是动

CoreAnimation编程指南(一)核心动画基础

什么是核心动画 核心动画是一个图形渲染和动画基础设施可在iOS和OS X,你使用的动画的看法和你的应用程序的其他视觉元素.核心动画,大部分的工作需要画出每一帧的动画是为你做的.所有您需要做的就是配置一些动画参数(如起点和终点)告诉核心动画开始.核心动画不休息,把最实际的绘图工作了板载图形硬件加速渲染.这种自动图形加速的结果在高帧速率和流畅的动画,而不增加CPU和减慢你的应用. 如果你正在写的iOS应用程序,您使用的是核心动画无论你是否知道.如果你正在写的OS X应用程序,你可以利用非常小的努力核

OC - 23.核心动画基础

概述 简介 核心动画提供了一组非常强大的动画API,通过该组API可以高效的实现绝大部分绚丽的动画效果 注意事项 核心动画的操作在子线程中执行,不会阻塞主线程 核心动画直接作用与CALayer对象上,不是UIView对象上 核心动画与UIView动画的区别 核心动画不会改变控件的frame属性,显示的只是一种假象 UIView动画会改变控件的frame属性,显示的是控件真实地frame属性 核心动画类 核心动画相关类的关系图 此图来源官方文档,不知为何右下角不是CAKeyframeAnimati

(一二二)核心动画进阶

上节我们介绍了核心动画基础,这一节介绍核心动画的主要应用和局限性. [核心动画的局限性] 有一点需要注意,所有的核心动画都是假象,只是修改了View的展示位置,而不能修改真实位置,即使设置了不复位,仿佛是位置移动了,其实layer还在原位,要证明这一点,可以在动画完成后打印layer的位置. 为了获得动画结束时机,可以通过代理,UIView已经遵循了相关协议,可以实现动画开始和结束的两个方法. - (void)animationDidStart:(CAAnimation *)anim{ } -

iOS开发核心动画之动画

一. 核心动画简述 1. Core Animation是直接作用在CALayer上的,并非UIView,因此核心动画的本质是修改图层的某个属性 2. 核心动画继承结构 3. transform的相关属性 二. 核心动画 基础动画 : CABaseicAnimation 帧动画 : CAKeyframeAnimation 组动画 : CAAnimationGroup 转场动画 : CATransition 1. 基础动画(CABaseicAnimation) 1> 创建动画 CABasicAnim

核心动画编程指南Core Animation Programming Guide - iOS

1 有关核心动画 1.1 概览 1.1.1 Core Animation 管理应用的内容 核心是 layer objects, 1.1.2 更改 layer 触发动画 Like views, layer objects have a bounds rectangle, a position onscreen, an opacity, a transform, and many other visually-oriented properties that can be modified. 更改这