- (void)createBaseAnimation{

//基础动画

CABasicAnimation *animation = [CABasicAnimation animation];

animation.keyPath = @"bounds";

//    animation.fromValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 300, 300)];//默认为现在的状态

animation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 300, 300)];

animation.duration = 2;

animation.removedOnCompletion = NO;  //动画之后保持最新

animation.fillMode = kCAFillModeForwards;  //最新样式

animation.delegate = self;

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

}

- (void)animationDidStart:(CAAnimation *)anim{

NSLog(@"动画开始时调用");

}

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{

NSLog(@"动画结束时调用");

}

- (void)createKeyFrameAnimation{

//帧动画

CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];

animation.keyPath = @"position";

//路径

//    CGMutablePathRef path = CGPathCreateMutable();

//    CGPathAddEllipseInRect(path, nil, CGRectMake(100, 100, 200, 200));

//

//    animation.path = path;

//注意:与基础动画的区别:可以设置多个点/一堆值

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

NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(0, 300)];

NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(300, 0)];

animation.values = @[value1,value2,value3];

//动画的执行节奏

animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

animation.duration = 5;

animation.removedOnCompletion = NO;  //动画之后保持最新

animation.fillMode = kCAFillModeForwards;  //最新样式

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

}

- (void)createTransiton{

//转场动画

CATransition *animaiton = [CATransition animation];

//动画过渡类型

animaiton.type = @"cube";

//过渡方向

animaiton.subtype = kCATransitionFade;

animaiton.duration = 3;

[view.layer addAnimation:animaiton forKey:nil];

}

- (void)createAnimationGroup{

//动画分组(旋转+缩放)

//1.旋转

CABasicAnimation *rotationAnimaiton = [CABasicAnimation animation];

rotationAnimaiton.keyPath = @"transform.rotation.z";

rotationAnimaiton.toValue = @(M_PI_4 * 3);

rotationAnimaiton.duration = 5;

rotationAnimaiton.repeatCount = MAXFLOAT;

//2.缩放

CABasicAnimation *scaleAnimation = [CABasicAnimation animation];

scaleAnimation.keyPath = @"transform";

scaleAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(2, 2, 0)];

scaleAnimation.duration = 5;

//动画分组

CAAnimationGroup *group = [CAAnimationGroup animation];

group.animations = @[rotationAnimaiton,scaleAnimation];

group.removedOnCompletion = NO;

group.fillMode = kCAFillModeForwards;

group.duration = 5;

[view.layer addAnimation:group forKey:nil];

}

CoreAnimation 核心动画的更多相关文章

  1. iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程

    iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...

  2. CoreAnimation 核心动画 / CABasicAnimation/ CAKeyframeAnimation

    - (void)createBaseAnimation{ //基础动画 CABasicAnimation *animation = [CABasicAnimation animation]; anim ...

  3. iOS CoreAnimation 核心动画

    一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...

  4. CoreAnimation 核心动画一 (一些常用属性 和 方法)

    1.常用属性: frame   bounds   center   alpha    Transition 过渡    transform 动画效果 2.常用方法: +(void)setAnimati ...

  5. CoreAnimation 核心动画二 锚点

    锚点: anchorPoint     以锚点为中心 执行动画 (与 渔夫固定船的点时一致的) anchorPoint 默认是 0.5,0.5  (注意: 锚点 是一个比例) anchorPoint ...

  6. iOS 核心动画

    核心动画(Core Animation) : •CoreAnimation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.fr ...

  7. IOS QuartzCore核心动画框架

    IOS QuartzCore核心动画框架 核心动画框架 使用核心动画需要引入的框架:#import CALayer: CoreAnimation CALayer就是UIView上的图层,很多的CALa ...

  8. iOS学习——核心动画

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

  9. 核心动画——Core Animation

    一. CALayer (一). CALayer简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比方一个button.一个文本标签.一个文本输入框.一个图标等等.这些都是UIView ...

随机推荐

  1. NodeJS的Cluster模块使用

    一.前言大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU实现并行. 随着n ...

  2. windows10 subsystem(bash) 如何使用jupter notebook

    按照传统惯例,应该映射端口jupyter notebook --port=15000,然后用浏览器开http://localhost:15000/ 但是当你运行python的时候,居然发现kernel ...

  3. 【thinkphp 5 在nginx 环境下路由无法生效(404 500错误 )的解决方法】

      非常惭愧的说,由于之前一直使用的是windowservice,安装apache来进行服务器布置的,这种方式也是最简单最直接的方式, 但是由于php的服务大多都是linux栈的,咱们也不能落后呀,在 ...

  4. UUID错误

    在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no suc ...

  5. c#入门系列——类和对象的代码实现

    面向对象 说起面向对象,大家因该都听说过,也知道是一个编程的方法,简称oop技术.它将对象的算法和数据结构看作一个整体,而一个程序就是由多个对象结合的整体.这样做可以提高代码的复用率,提高了软件的可维 ...

  6. iOS Storyboard适配问题

      通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步.在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想.我们不必再为不 ...

  7. Javascript面对对象. 第二篇

    但是还有一个问题,就是识别的问题,因为根本无法搞清楚他们到底是哪个对象的实例. 1.构造函数 function CreateObject(name,age){ //创建一个对象,使用构造函数的对象都是 ...

  8. C语言对齐

    "%-md":左对齐,若m比实际少时,按实际输出.(m为整数) "%md":右对齐,若m比实际少时,按实际输出. 我自己编了一个,给你看看实际效果: #incl ...

  9. Thrift入门初探(2)--thrift基础知识详解

    昨天总结了thrift的安装和入门实例,Thrift入门初探--thrift安装及java入门实例,今天开始总结一下thrift的相关基础知识. Thrift使用一种中间语言IDL,来进行接口的定义, ...

  10. 关于C# XmlDocument方法Load加载流后自动释放流的解决方法

    在实际应用doc.Load(Request.InputStream)的时候,doc.Load方法内置默认释放流 造成再次度Request.InputStream的时候,代码报错 替换方法: XmlDo ...