- (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. JS属性操作

    一.属性读操作:元素.属性名   ( 获取.找到属性值 ) 属性写操作:元素.属性名 = 新的值   ( 替换.修改属性值 ) 二.没有属性名的,也可进行读.写操作: 读操作:元素.innerHTML ...

  2. HDU4474

    Yet Another Multiple Problem Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  3. CodeForces 333A

    Secrets Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  4. Win下JDK的安装和简单使用教程

    下载安装 一.从官网下载 1.百度jdk 然后点击像图片中指出的那个链接(www.oracle.com是java的官网) 2.下载(先点击那个 选择框 同意许可协议) 然后根据自己的电脑选择下载 64 ...

  5. C++ 构造函数和析构函数的调用顺序、虚析构函数的作用

    构造函数和析构函数的调用顺序 构造函数的调用顺序: 当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达最底层的目标派生类的构造函数为止. 析构函数的调用书序: ...

  6. C++编程练习(6)----“实现简单的队列的链式存储结构“

    队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出.简称链队列. 实现代码如下: /* LinkQueue.h 头文件 */ #include<iostream> #defi ...

  7. Python自然语言处理学习笔记之信息提取步骤&分块(chunking)

    一.信息提取模型 信息提取的步骤共分为五步,原始数据为未经处理的字符串, 第一步:分句,用nltk.sent_tokenize(text)实现,得到一个list of strings 第二步:分词,[ ...

  8. nginx : server_name localhost 和 chrome : Provisional headers are shown

    问题相关问题现象:解决思路解决方案总结 问题相关 nginx : server_name localhost chrome : Provisional headers are shown 问题现象: ...

  9. 从C#到TypeScript - 类

    总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...

  10. apche基于域名,ip,端口的配置

    基于域名的服务端: 13 iptables -F 14 setenforce 0 15 ifconfig eth0 172.18.43.146 16 yum -y install bind bind- ...