核心动画的接触点滴(二)

本篇记录核心动画中基础动画的使用:

一、简单介绍

CAPropertyAnimation的子类

属性解析:

fromValue:keyPath相应属性的初始值

toValue:keyPath相应属性的结束值

随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue

如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行        后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。

比如,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动        画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0)

二、平移动画

//1.创建核心动画38     
CABasicAnimation *anima=[CABasicAnimation animation];    
 
//1.1告诉系统要执行什么样的动画    
[email protected]"position";
     
//设置通过动画,将layer从哪儿移动到哪儿     
anima.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)];     
anima.toValue=[NSValue valueWithCGPoint:CGPointMake(200, 300)];  
      
//1.2设置动画执行完毕之后不删除动画    
anima.removedOnCompletion=NO;  
  
//1.3设置保存动画的最新状态50    
anima.fillMode=kCAFillModeForwards;
     
//2.添加核心动画到layer
[self.myLayer addAnimation:anima forKey:nil];

byValue和toValue的区别,前者是在当前的位置上增加多少,后者是到指定的位置。

在上面的代码中加上anima.delegate = self;即可

使用代理监听动画的执行过程(delegate)

//开始执行动画时调用
-(void)animationDidStart:(CAAnimation *)anim 
{ 

    NSLog(@"开始执行动画"); 

} 
    
//动画执行完毕后调用
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{

   //动画执行完毕,打印执行完毕后的position值    
   NSString *str=NSStringFromCGPoint(self.myLayer.position);   
   NSLog(@"执行后:%@",str);
   
}

三、缩放动画

只需要修改以下几点即可

//1.1告诉系统要执行什么样的动画    
[email protected]"bounds";
     
//设置通过动画,将layer从多大缩放到多大     
anima.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)];     
anima.toValue=[NSValue valueWithCGPoint:CGPointMake(200, 300)];
//同样也可以直接食用byValue直接从当前大小缩放到指定大小

四、旋转动画

需要修改以下几点即可

anima.keyPath = @"transform";  //旋转

//1.2修改属性,执行动画(第一个参数为旋转的角度,后面三个分别是些x,y,z)
   anima.byValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];



时间: 2024-10-19 06:51:26

核心动画的接触点滴(二)的相关文章

核心动画的接触点滴(一)

本周项目进展仍然没有太大变化,于是接着上周未完成的计划,开始着手对核心动画开始做学习了解和记录. OS开发UI篇-核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core Animation是跨平台的,可以用在Mac OS X和iOS平台. Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程.不阻塞主线程,

核心动画的接触点滴(三)

本篇记录的是核心动画的中的CApropertyAnimation中的关键帧动画部分.非常有用: 关键帧动画是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值 属性解析: values:就是上述的NSArray对象.里面的元素称为"关键帧"(keyframe).动画对象会

核心动画的接触点滴(四)

一.转场动画接受 CAAnimation的子类,用于做转场特效,可以为层做移入或移除屏幕的动画效果.比如像UINavigationController就是使用的转场动画进行页面的推出和进入的. 包含属性: type:动画的过渡类型(以何种方式进行执行转场动画) subtype:过渡方向 startProgress:起始点(在整体动画的百分比) endProgress:终结点(在整体动画的百分比) 二.代码示例 { //创建转场动画实例 CATransition *CTAnima = [CATra

核心动画的接触点滴(五)

1.简单介绍 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持.动画的执行过程全部由UIView类自动完成,我们只需要通过调用[UIView beginAnimations: nil context:nil]和[UIView commitAnimations]这2个方法来通知视图即可. 常用的方法说明: + (void)setAnimationDelegate:(id)delegate   --------  设置动画代理对象,当动画开

iOS核心动画Core Animation(二)

一. 使用核心动画实现动画效果的步骤 ■1. 创建动画对象 ■2. 设置动画属性 ■3. 把动画对象添加到某个 CALayer 对象上 ■4. 需要停止动画:可以调用 remove 方法移除动画 具体步骤 1.使用它需要先添加QuartzCore.framework框架和引入主头文件<QuartzCore/QuartzCore.h> 2.初始化一个CAAnimation对象,并设置一些动画相关属性 3.通过调用CALayer的addAnimation:forKey:方法增加CAAnimatio

iOS开发——动画编程OC篇&amp;(二)核心动画

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

(一二二)核心动画进阶

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

猫猫学IOS(四十二)UI之核心动画CAAnimationGroup以及其他

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 效果: 代码: 很简单,不多说,就是把一堆动画放一起,看代码. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 平移动画 CABasicAnimation *a1 = [CABasicAnimation animation]; a1.k

IOS-CoreAnimation(核心动画)

一.核心动画 1.Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h> 2.开发步骤: ①初始化一个动画对象(CAAnimation)并设置一些动画相关属性 ②添加动画对象到层(CALayer)中,开始执行动画 3.CALayer中很多属性都可以通过CAAnimation实现动画效果,包括:opacity.posi