CoreAnimation


1.CABasicAnimation

// position 
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"position"]; // bounds
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"bounds.size"]; // opacity
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"opacity"]; // backgroundColor
// 景色渐变一定用CGColor
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"backgroundColor"]; // transform.scale
// 以下缩放是中心缩放,若需要自定义缩放点需要设置锚点: [self.firstView.layer setAnchorPoint:CGPointMake(0, 0)];
// 一般,锚点位于图层中心{0.5,0.5},其度量是以单位方形而不是点为参照,无论图层有多大,右下角的坐标都是{1.0,1.0}
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; // transform.rotation
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; // x ,y ,z 默认是z // transform.translation
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; // x ,y ,z 默认是x // cornerRadius
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"cornerRadius"]; // borderWidth
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"borderWidth"];

以position为例

// position
- (void)postionAnimation {
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"position"];
ba.toValue = [NSValue valueWithCGPoint:self.firstView.center];
ba.duration = 0.8;
ba.delegate = self;
ba.removedOnCompletion = NO; // 动画结束后是否回到原状态,默YES.若为NO,则 fillMode 须为 kCAFillModeForwards
ba.fillMode = kCAFillModeBackwards;
ba.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; // 动画的时间节奏控制
[self.secondView.layer addAnimation:ba forKey:@"position"];
}

2.CAKeyframeAnimation

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated]; [self valuesAnimation];
} - (void)valuesAnimation {
CAKeyframeAnimation *kf = [CAKeyframeAnimation animationWithKeyPath:@"position"];
kf.fillMode = kCAFillModeForwards;
kf.removedOnCompletion = NO;
kf.duration = 3;
kf.repeatCount = 0;
NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(0, 120)];
NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(190, 20)];
NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(20, 300)];
NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(300, 150)];
kf.values = @[value1,value2,value3,value4]; [self.firstView.layer addAnimation:kf forKey:@"valuesKeyframe"];
} - (void)pathAnimation {
CAKeyframeAnimation *kf = [CAKeyframeAnimation animationWithKeyPath:@"position"];
kf.duration = 3.0f;
kf.removedOnCompletion = NO;
kf.fillMode = kCAFillModeForwards;
kf.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, NULL, CGRectMake(0, 0, 370, 300)); kf.path = path;
CGPathRelease(path); [self.firstView.layer addAnimation:kf forKey:@"pathKeyframe"];
}

3.CATransition
/***********type:动画过渡类型***********************

        kCATransitionFade 交叉淡化过渡
kCATransitionMoveIn 新视图移到旧视图上面
kCATransitionPush 新视图把旧视图推出去
kCATransitionReveal 将旧视图移开,显示下面的新视图

        kCATransitionCube 立方体翻滚效果
kCATransitionOglFlip 上下左右翻转效果
kCATransitionSuckEffect 收缩效果,如一块布被抽走
kCATransitionRippleEffect 水滴效果
kCATransitionPageCurl 向上翻页效果
kCATransitionPageUnCurl 向下翻页效果
kCATransitionCameraIrisHollowOpen 相机镜头打开效果
kCATransitionCameraIrisHollowClos 相机镜头关闭效果

************************************************************/

/***********subType:动画过渡方向***********************

        kCATransitionFromRight 从右边
kCATransitionFromLeft 从左边
kCATransitionFromTop 从顶部
kCATransitionFromBottom 从底部

*************************************************************/
以cameraIrisHollowOpen为例

 - (void)cameraIrisHollowTransition {
CATransition *t = [CATransition animation];
t.type = @"cameraIrisHollowOpen";
// t.type = @"cameraIrisHollowClos";
t.subtype = kCATransitionFromLeft;
t.duration = 1.5;
self.firstView.backgroundColor = [UIColor colorWithRed:0.2 green:0.3 blue:0.6 alpha:1];
[self.firstView.layer addAnimation:t forKey:@"pageCurlTransition"];
}

4.CASpringAnimation 继承自CABasicAnimation

/**
* @author Jack Lee, 16-05-17 22:05:53
*
* @brief after iOS9.0
*/
- (void)springAnimation {
CASpringAnimation *spring = [CASpringAnimation animationWithKeyPath:@"bounds.size"];
spring.mass = 10; // 质量,影响图层运动时的弹簧惯性,质量越大,弹簧拉伸和压缩的幅度越大
spring.stiffness = 5000; // 刚度系数(劲度系数/弹性系数),刚度系数越大,形变产生的力就越大,运动越快
spring.damping = 100; // 阻尼系数,阻止弹簧伸缩的系数,阻尼系数越大,停止越快
spring.initialVelocity = 5; // 初始速率,动画视图的初始速度大小;速率为正数时,速度方向与运动方向一致,速率为负数时,速度方向与运动方向相反
spring.duration = spring.settlingDuration; // 结算时间 返回弹簧动画到停止时的估算时间,根据当前的动画参数估算,通常弹簧动画的时间使用结算时间比较准确
spring.toValue =[NSValue valueWithCGSize:self.firstView.bounds.size];
spring.removedOnCompletion = NO;
spring.fillMode = kCAFillModeForwards;
[self.secondView.layer addAnimation:spring forKey:@"spring"];
}

5.CAAnimationGroup

- (void)groupAnimation {
CABasicAnimation *p = [CABasicAnimation animationWithKeyPath:@"position"];
p.toValue = [NSValue valueWithCGPoint:self.firstView.center]; CABasicAnimation *o = [CABasicAnimation animationWithKeyPath:@"opacity"];
o.toValue = @(0.2); CABasicAnimation *b = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
b.toValue = [NSValue valueWithCGSize:self.firstView.bounds.size]; CAAnimationGroup *g = [CAAnimationGroup animation];
g.animations = @[p,o,b];
g.duration = 0.8;
g.removedOnCompletion = NO;
g.fillMode = kCAFillModeForwards;
g.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; [self.secondView.layer addAnimation:g forKey:@"groupAnimation"];
}
 

CoreAnimation的更多相关文章

  1. iOS CoreAnimation详解(一) 有关Layer的动画

    以前由于项目需要 也写了一些动画 ,但是知识不系统,很散.这段时间趁着项目完成的空袭,来跟着大神的脚步系统的总结一下iOS中Core Animation的知识点. 原博客地址:http://blog. ...

  2. CoreAnimation 之CATextLayer

    如果你想在一个图层中显示文字,完全可以借助图层代理直接将Core Graphics写入图层的内容(这就是UILabel的精髓).如果雨果寄宿于图层的视图,直接在图层上操作,其实相当繁琐.你要为每一个显 ...

  3. 二、CoreAnimation之寄宿图详解

    在之前的图层树中我们知道,可以使用CALayer对象创建一些有背景颜色的图层,其实使用CALayer,不仅可以利用其展示背景颜色,还可以展示图片.而这些展示内容,其实就是CALayer的寄宿图.这一节 ...

  4. 一、CoreAnimation之图层树详解

    CoreAnimation :在字面意思为“核心动画”,但是如果您认为它仅仅是一个动画框架,那可能就要错过一些经典功能了.动画,只是CoreAnimation功能的一小部分,毕竟人家的源头是一个叫做L ...

  5. iOS CoreAnimation 核心动画

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

  6. ios基础篇(二十五)—— Animation动画(UIView、CoreAnimation)

    Animation主要分为两类: 1.UIView属性动画 2.CoreAnimation动画 一.UIView属性动画 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIVie ...

  7. iOS关于CoreAnimation动画知识总结

    一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了: ...

  8. CoreAnimation方法汇总

    使用CoreAnimation一般分为三个部分:1.创建执行动画的CALayer 2.创建动画 3.CALayer 添加Animation CoreAnimation是以锚点为基础. CoreAnim ...

  9. CoreAnimation笔记

    核心动画继承结构 CoreAnimation Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Ani ...

  10. iOS开发之 动画CoreAnimation

    http://blog.treney.com/index.php/archives/CoreAnimation.html?hmsr=toutiao.io&utm_medium=toutiao. ...

随机推荐

  1. DBA的那些事

    --Author:Leshami --Blog    :http://blog.csdn.ne/leshami 说起DBA,全称是Database Administrator,不是Doctor of ...

  2. vijosP1687 细菌总数

    vijosP1687 细菌总数 链接:https://vijos.org/p/1687 [思路] 错排公式+高精度. 题目要求排列数目而且不能有Pi==i的情况出现,可以看出这正是1,2,3,4,5, ...

  3. jQuery技术内幕预览版.pdf2

    第二章 构造jQuery对象 jQuery对象是一个类数组对象,含有连续的整型属性.length属性和大量的jQuery方法,$()是jQuery()的缩写 构造函数jQuery() 如果调用构造函数 ...

  4. 解决IE6浏览器下position:fixed固定定位问题

    像你所遇到的问题一样, IE6浏览器有太多的bug让制作网页的人头疼.这篇文章介绍的是介绍的是如何解决IE6不支持position:fixed;属性的办法.如果我们需要做某个元素始终位于浏览器的底部, ...

  5. 【杭州(含嘉兴,绍兴,金华,湖州,义乌)】Uber优步司机奖励政策(2月1日~2月7日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. How to Validate XML using Java

    Configure Java APIs (SAX, DOM, dom4j, XOM) using JAXP 1.3 to validate XML Documents with DTD and Sch ...

  7. nyoj 1036 非洲小孩【贪心区间选点】

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  8. Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive初步

    Hive简介 Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制 ...

  9. java的单例设计模式

    java的单例设计模式包括:饿汉设计模式和懒汉设计模式: 步骤: 1.创建一个对象把他设置为私有的成员变量,保证唯一 2.私有构造方法,防止new一个对象. 3.定义一个公开的静态方法,返回第一步创建 ...

  10. PAT 1004. Counting Leaves (30)

    A family hierarchy is usually presented by a pedigree tree.  Your job is to count those family membe ...