IOS QuartzCore核心动画框架

核心动画框架
  1. 使用核心动画需要引入的框架:#import
  2. CALayer: CoreAnimation
  3. CALayer就是UIView上的图层,很多的CALayer组成了UIView。
  4. CALayer与UIView是两个完全不同的类
  5. UIView动画就是简单动画,可以实现改变,偏移,形变,翻转,旋转,翻页
  6. QuartzCore.framework:
    1. CAAnimation:
      1. CAAnimationGroup: 并行动画
      2. CATransition:
      3. CAPropertyAnimation: 属性动画
        1. CABasicAnimation:
        2. CAKeyframeAnimation:
  7. // 使用关键帧动画进行旋转

    CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation animationWithKeyPath:@"transform"];

    CATransform3D transform3d1 = CATransform3DMakeRotation(M_PI * 0.0, 0, 0, 1.0f);

    CATransform3D transform3d2 = CATransform3DMakeRotation(M_PI * 0.5, 0, 0, 1.0f);

    CATransform3D transform3d3 = CATransform3DMakeRotation(M_PI * 1.0, 0, 0, 1.0f);

    CATransform3D transform3d4 = CATransform3DMakeRotation(M_PI * 1.5, 0, 0, 1.0f);

    CATransform3D transform3d5 = CATransform3DMakeRotation(M_PI * 2.0, 0, 0, 1.0f);

    NSValue *value1 = [NSValue valueWithCATransform3D:transform3d1];

    NSValue *value2 = [NSValue valueWithCATransform3D:transform3d2];

    NSValue *value3 = [NSValue valueWithCATransform3D:transform3d3];

    NSValue *value4 = [NSValue valueWithCATransform3D:transform3d4];

    NSValue *value5 = [NSValue valueWithCATransform3D:transform3d5];

    keyFrame.values = @[value1, value2, value3, value4, value5];

    keyFrame.duration = 20;

    keyFrame.repeatCount = 100000;

    [image.layer addAnimation:keyFrame forKey:nil];

  8. // 声明一个动画

    CATransition *animation = [CATransition animation];

    // 设置动画时间

    animation.duration = 1.0f;

    // 设置动画动画的执行效果 慢--快--慢的效果

    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    // 设置动画的样式

    // animation.type = kCATransitionMoveIn;

    animation.type = @"cube"; // 私有API中的立方体滚动

    // 设置动画的移入的位置 从左、从右、从上、从下

    // animation.subtype = kCATransitionFromTop;

    animation.subtype = @"toLeft"; // 私有API中的从左面滚动

    // 给animatedView添加动画

    [animatedView.layer addAnimation:animation forKey:nil];

  9. // 旋转

    CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI); // 只能旋转一次

    CGAffineTransform transform2 = CGAffineTransformRotate(animatedView.transform, M_PI_4); // 可以多次旋转

    // 缩小,放大

    CGAffineTransform transform3 = CGAffineTransformMakeScale(1.2f, 1.2f); // 缩放一次

    CGAffineTransform transform4 = CGAffineTransformScale(animatedView.transform, 0.9f, 0.9f); // 可以连续操作

    // 移动

    CGAffineTransform transform5 = CGAffineTransformMakeTranslation(12, 12);

    CGAffineTransform transform6 = CGAffineTransformTranslate(animatedView.transform, 0, -120);

    // 开始动画

    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:0.5f];

    [animatedView setTransform:transform6];

    [UIView commitAnimations];

  10. // CABasicAnimation

    CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];

    CATransform3D transform3d1 = CATransform3DMakeTranslation(10, 10, 10); // 3D移动效果

    CATransform3D transform3d11 = CATransform3DTranslate(transform3d1, 10, 10, 10);

    CATransform3D transform3d2 = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 1.0); // 3D旋转效果

    CATransform3D transform3d22 = CATransform3DRotate(transform3d2, M_PI, 0.0, 0.0, 1.0);

    CATransform3D transform3d3 = CATransform3DMakeScale(0.2f, 1.2f, 1.2f); // 3D缩放效果

    CATransform3D transform3d33 = CATransform3DTranslate(transform3d2, 0.0, 0.0, 0.0);

    basicAnimation.toValue = [NSValue valueWithCATransform3D:transform3d1];

    basicAnimation.removedOnCompletion = YES; // 动画结束后去除动画

    basicAnimation.duration = 0.5f; // 设置动画时间

    basicAnimation.cumulative = NO;

    basicAnimation.repeatCount = 0; // 循环次数

    [animatedView.layer addAnimation:basicAnimation forKey:nil];

  11. // 只修改坐标的X轴

    CABasicAnimation *basicAnimation2 = [CABasicAnimation animationWithKeyPath:@"position.x"];

    basicAnimation2.duration = 0.5f;

    basicAnimation2.toValue = [NSNumber numberWithFloat:130];

    [animatedView.layer addAnimation:basicAnimation2 forKey:nil];

    // 修改position

    CABasicAnimation *basicAnimation3 = [CABasicAnimation animationWithKeyPath:@"position"];

    basicAnimation3.duration = 0.5f;

    basicAnimation3.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];

    [animatedView.layer addAnimation:basicAnimation3 forKey:nil];

    // 修改透明度

    CABasicAnimation *basicAnimation4 = [CABasicAnimation animationWithKeyPath:@"opacity"];

    basicAnimation4.duration = 0.5f;

    // 设置透明度的变化

    basicAnimation4.toValue = [NSNumber numberWithFloat:0.0f];

    // 添加上动画

    [animatedView.layer addAnimation:basicAnimation4 forKey:nil];

  12. // 动画组

    // 初始化一个动画组

    CAAnimationGroup *animationGroup = [CAAnimationGroup animation];

    // 动画组中的第一个动画

    CABasicAnimation *basicAnimation5 = [CABasicAnimation animationWithKeyPath:@"opacity"];

    basicAnimation5.duration = 0.5f;

    basicAnimation5.toValue = [NSNumber numberWithFloat:0.0f];

    // 动画组中的第二个动画

    CABasicAnimation *basicAnimation6 = [CABasicAnimation animationWithKeyPath:@"position"];

    basicAnimation6.duration = 0.5f;

    basicAnimation6.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];

    animationGroup.animations = @[basicAnimation5, basicAnimation6];

    // 设置动画组的时间

    animationGroup.duration = 0.5;

    // 添加上

    [animatedView.layer addAnimation:animationGroup forKey:nil];

  13. CAKeyframeAnimation *keyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

    // 运动路径的几个点

    NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(320/2, 0)];

    NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(320, 548/2)];

    NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(320/2, 548)];

    NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(0, 548/2)];

    NSValue *value5 = [NSValue valueWithCGPoint:CGPointMake(320/2, 0)];

    // 移动到的四个点

    keyframeAnimation.values = @[value1, value2, value3, value4, value5, value4, value3, value2, value1];

    // 设置速度

    keyframeAnimation.duration = 1.0f;

    // 设置移动的形式

    keyframeAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];

    keyframeAnimation.repeatCount = 10000000.0f;

    // 添加上

    [animatedView.layer addAnimation:keyframeAnimation forKey:nil];

 

IOS QuartzCore核心动画框架的更多相关文章

  1. iOS学习——核心动画之Layer基础

    iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...

  2. iOS学习——核心动画

    iOS学习——核心动画 1.什么是核心动画 Core Animation(核心动画)是一组功能强大.效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用.核心动画所在的位置如下图 ...

  3. iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类

    核心动画的详解介绍:CAAnimation(抽象类)   1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...

  4. iOS之核心动画(Core Animation)

      Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core ...

  5. iOS基础 - 核心动画

    一.核心动画 l 核心动画基本概念 l 基本动画 l 关键帧动画 l 动画组 l 转场动画 l Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事 ...

  6. iOS之核心动画

    .将动画的所有方法封装到一个类里面 MyCAHelper.h #import <Foundation/Foundation.h> #import <QuartzCore/Quartz ...

  7. iOS:核心动画之基本动画CABasicAnimation

    基本动画,是CAPropertyAnimation的子类 属性说明: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 动画过程说明: 随着动画的进行 ...

  8. iOS:核心动画具体的类和协议的介绍

    核心动画类:CAAnimation.CAPropertyAnimation.CABasicAnimation.CAKeyframeAnimation.CATransition.CAAnimationG ...

  9. iOS开发-核心动画随笔

    核心动画可以让View旋转,缩放,平移(主要是操作View的layer(层)属性)但是核心动画改变的位置不是真实的位置,一切都是假象所以有时候要用到其他动画,如UIView本来封装的动画,还有定时器 ...

随机推荐

  1. 【转】javascript日期操作详解(脚本之家整理)

    时间对象是一个我们经常要用到的对象,无论是做时间输出.时间判断等操作时都与这个对象离不开.除开JavaScript中的时间对象外,在VbScript中也有许多的时间对象,而且非常好用.下面还是按照我们 ...

  2. linux上安装rar解压软件

    描述:Linux默认自带ZIP压缩,最大支持4GB压缩,RAR的压缩比大于4GB. -------------------------------------------------- 下载 # wg ...

  3. 用if做了一个简单的猜拳游戏(做的不好还请指点,谢谢!)

    #include "stdio.h" #include "stdlib.h" #include "time.h" //随机函数的头文件 ma ...

  4. SQL语法集锦三:合并列值与分拆列值

    本文转载http://www.cnblogs.com/lxblog/archive/2012/09/29/2708724.html 在SQL中分拆列值和合并列值老生常谈了,从网上搜刮了一下并记录下来, ...

  5. BZOJ 1878 SDOI 2009 HH项链 树状数组 + 脱机处理

    标题效果:一些珠子项链.珠具有不同的颜色.我们问了很多次有多少种不同的颜色有过一段范围. 思考:这个问题让我学会聪明的离线实践.按左端点排序问题.加工出来的位置每种颜色首次出现.每一种颜色的下一次出现 ...

  6. Java基础知识强化06:使用BigDecimal计算阶乘1+1/2!+1/3!+……

    package himi.hebao04; import java.math.BigDecimal; public class TestDemo07 { public static void main ...

  7. Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

    canvas绘制图片,由于浏览器的安全考虑,如果在使用canvas绘图的过程中,使用到了外域的图片资源,那么在toDataURL()时会抛出安全异常: Uncaught SecurityError: ...

  8. 手势交互之GestureDetector

    GsetureDetector 一.交互过程 触屏的一刹那,触发MotionEvent事件 被OnTouchListener监听,在onTouch()中获得MotionEvent对象 GestureD ...

  9. Socket 学习

    Socket一般应用模式(服务器端和客户端) 服务器端Socket(至少有两个) ->一个负责接收客户端连接请求(但不负责和客户端通信) ->没成功接收到一个客户端的连接便在服务端生成一个 ...

  10. Windows7添加SSD硬盘后重启卡住正在启动

    楼主办公电脑,原来只配置了一块机械硬盘,用着总很不顺心,于是说服领导给加了块SSD固态硬盘. 操作如下: 1.在PE下分区格式化新固态硬盘,将原来机械硬盘的C盘GHOST备份后还原到新固态硬盘: 2. ...