- (void)beginAnimatingLayer
{// 这里我们创建一个显式动画层的“transform”属性。// - The duration (in seconds) is controlled by the user.// - The repeat count is hard coded to go "forever".//闪烁动画//通过key找到相对应的属性CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];//设置动画时间[pulseAnimation setDuration:_animationDuration];//设置重复次数[pulseAnimation setRepeatCount:MAXFLOAT];// The built-in ease in/ ease out timing function is used to make the animation look smooth as the layer// animates between the two scaling transformations.//内置缓入/缓出定时功能是用来使动画看起来光滑的层//这两个比例之间的转换动画。// 计时功能定义动画的踱步。默认为nil*无显示线性起搏。/***  CAMediaTimingFunction表示描述一个定时曲线的函数中的一个段。该*函数归一化到范围内的输入时间映射[0,1]到*输出时间也是在区间[ 0,1] 。例如这些功能是用来*来定义的动画在其持续时间的起搏(或在*一个关键帧的持续时间)。*//**functionWithName:*  一种简便方法创建通用定时功能。该*目前支持的名字是'直线' ,' easeIn ',`将EaseOut '和*` easeInEaseOut '和'默认' (使用隐式动画曲线*由核心动画创建) 。*/[pulseAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];// 缩放层的一半大小CATransform3D transform = CATransform3DMakeScale(0.50, 0.50, 1.0);// CATransform3DIdentity 是单位矩阵,该矩阵没有缩放,旋转,歪斜,透视。该矩阵应用到图层上,就是设置默认值。[pulseAnimation setToValue:[NSValue valueWithCATransform3D:CATransform3DIdentity]];//转换到这个值[pulseAnimation setToValue:[NSValue valueWithCATransform3D:transform]];// 设置动画是否在运行完后继续用动画形式回到最初状态[pulseAnimation setAutoreverses:_autoreverses];// 添加显式动画层...动画会自动启动。[_layer addAnimation:pulseAnimation forKey:kBTSPulseAnimation];
}- (void)endAnimatingLayer
{//移除动画[_layer removeAnimationForKey:kBTSPulseAnimation];
}

CABasicAnimation 自己只有三个property fromValue toValue ByValue

当你创建一个 CABasicAnimation 时,你需要通过-setFromValue 和-setToValue 来指定一个开始值和结束值。 当你增加基础动画到层中的时候,它开始运行。当用属性做动画完成时,例如用位置属性做动画,层就会立刻 返回到它的初始位置

记住当你做动画时,你至少使用了 2 个对象。这些对象都是层本身,一个层或者层继承的对象,和在先前 的例子中你分配给层的 CABasicAnimation 对象。因为你给动画对象设定了最后的值(目的地),但是并不意 味着当动画完成的时候,层的属性就改变成了最后的值。当动画完成时,你必须显示的设定层的属性,这样动 画结束后,你的层才能真正的到你设定的属性值上。

你可以简单的停止动画到你结束的点上,但是这仅仅是一个视觉效果。层实际的值仍然是一样的。要真的 改变内部的值,就像刚才所说的你必须显示的设定那个属性。例如,显示的设定位置的属性,你需要在层中调 用-setPosition 方法。但是,这会造成一点问题。

如果你通过-set 这个方法显示的设定了层属性的值,那么默认的动画将被执行,而非之前你设定的动画。 在表 3-9 中演示了你设置位置的方法。注意到了,我们使用 position 已经创建了基础动画,但是我们在层上显 示的调用了-setPosition 方法,就覆盖了我们设定的动画,使我们设定的基础动画完全没用了。如果你使用了这 个代码,你会看到虽然我们的层结束的时候放到了正确的位置,但是它使用的是默认的 0.25 秒,而非我们在 动画里显示设定的 5秒钟。 (:对于这一点,我倒是没有试出作者所说的情况,也许是因为SDK版本的升级导致,所以这部分文字仅作参考,不一定正确。)

?
1
2
3
4
CABasicAnimation *animation =
[CABasicAnimation animationWithKeyPath:@”position”]; [animation setFromValue:[NSValue valueWithPoint:startPoint]]; [animation setToValue:[NSValue valueWithPoint:endPoint]]; [animation setDuration:5.0];
[layer setPosition:endpoint];
[layer addAnimation:animation forKey:nil];

因此现在问题出来了,你怎么能使用我们设定的动画呢?看表3-9的最后一行,注意到forKey:这个参数 是被设定为nil。这就是为什么动画不能覆盖默认动画的原因。如果你改变最后一行为[layer addAnimation:animation forKey:@"position"],动画将会按照我们设定的时间工作。这告诉了层当需要做动画时, 使用我们给关键路径指定的新动画。

下面是一些继承的游泳的属性

Autoreverses

当你设定这个属性为YES时,在它到达目的地之后,动画的返回到开始的值,代替了直接跳转到 开始的值。

Duration
Duration这个参数你已经相当熟悉了。它设定开始值到结束值花费的时间。期间会被速度的属性所影响。RemovedOnCompletion
这个属性默认为YES,那意味着,在指定的时间段完成后,动画就自动的从层上移除了。这个一般不用。

假如你想要再次用这个动画时,你需要设定这个属性为NO。这样的话,下次你在通过-set方法设定动画的属 性时,它将再次使用你的动画,而非默认的动画。

Speed

默认的值为1.0.这意味着动画播放按照默认的速度。如果你改变这个值为2.0,动画会用2倍的速度播放。 这样的影响就是使持续时间减半。如果你指定的持续时间为6秒,速度为2.0,动画就会播放3秒钟---一半的 持续时间。

BeginTime

这个属性在组动画中很有用。它根据父动画组的持续时间,指定了开始播放动画的时间。默认的是0.0.组 动画在下个段落中讨论“Animation Grouping”。

TimeOffset

如果一个时间偏移量是被设定,动画不会真正的可见,直到根据父动画组中的执行时间得到的时间都流逝 了。

RepeatCount

默认的是0,意味着动画只会播放一次。如果指定一个无限大的重复次数,使用1e100f。这个不应该和repeatDration属性一块使用。

RepeatDuration

这个属性指定了动画应该被重复多久。动画会一直重复,直到设定的时间流逝完。它不应该和repeatCount一起使用。

animationWithKeyPath的值:

  transform.scale = 比例轉換

transform.scale.x = 闊的比例轉換

transform.scale.y = 高的比例轉換

transform.rotation.z = 平面圖的旋轉

opacity = 透明度

margin

zPosition

backgroundColor 背景颜色

cornerRadius 圆角

borderWidth

bounds

contents

contentsRect

cornerRadius

frame

hidden

mask

masksToBounds

opacity

position

shadowColor

shadowOffset

shadowOpacity

shadowRadius

CoreAnimation-CABasicAnimation相关推荐

  1. CABasicAnimation的基本使用方法(移动·旋转·放大·缩小)

    博主:最近iOS开发中用到CoreAnimation的framework来做动画效果,虽然以前也用过,但一直没有系统学习过,今天看到一篇非常详细的博文(虽然是日语,但真的写的很好),在此翻译出来供大家 ...

  2. iOS 动画之CoreAnimation(CALayer)

    CoreAnimation基本介绍 CoreAnimation动画位于iOS框架的Media层 CoreAnimation动画实现需要添加QuartzCore.Framework CoreAnimat ...

  3. iOS开发CoreAnimation解读之四——Layer层动画内容

    iOS开发CoreAnimation解读之四--Layer层动画内容 一.引言 通过前几篇博客的介绍,我们可以了解到layer层可以设置许多与控件UI相关的属性,并且对于iOS开发,UIView层的属 ...

  4. GIF动画,菊花动画,UIView动画,CoreAnimation动画(CALayer动画)的用法

    1.GIF动画 1 // 创建一个显示图片的imageView // viewController创建 2 UIImageView *showGifImageView = [[UIImageView ...

  5. iOS CoreAnimation

    为什么80%的码农都做不了架构师?>>>    前言:这篇文章太全了,忍不住就转了,原地址 CoreAnimation,另外前面写过一篇简单的动画IOS简单动画 核心动画,开发人员可 ...

  6. CoreAnimation (CALayer 动画)

    CoreAnimation基本介绍: CoreAnimation动画位于iOS框架的Media层 CoreAnimation动画实现需要添加QuartzCore.Framework CoreAnima ...

  7. CoreAnimation汇总

    CoreAnimation 核心动画继承结构 核心动画继承结构 注意:核心动画中的虚类不能使用,而应该使用他们子类中的实类. Core Animation的使用步骤 如果是Xcode6之前的版本,要导 ...

  8. Swift CoreAnimation ---- CALayer的呈现层和模型层

    前言 自己的语言能力有限,借鉴别人的文章理解并写下这篇文章. 参考链接:iOS CoreAnimation专题--原理篇(三) CALayer的模型层与展示层 - 知乎 使用Swift语言,深入CAL ...

  9. iOS CoreAnimation专题——实战篇(四)基于拖动手势的视图3D旋转效果

    二维图像的显示 矩阵变换 基向量 线性变换 线性变换的复合 平移变换 齐次坐标 齐次坐标下的点和向量的区别 齐次坐标下的平移变换 齐次坐标下的平行线相交问题 CATransform3D 基于CATra ...

  10. iOS CoreAnimation专题——技巧篇(二)CAShapeLayer with Bezier Path - Layer世界的神奇画笔

    前言 所有的CALayer子类 CAShapeLayer 矢量图简介 矢量图 构建CAShapeLayer 贝塞尔曲线 贝塞尔曲线简介 线性贝塞尔曲线 二阶贝塞尔曲线 三阶贝塞尔曲线 一般化 控制点 ...

最新文章

  1. php中的$_GET全局变量,通过URL传递参数
  2. python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能
  3. 算法题001 剑指Offer 面试题三:二维数组中的查找
  4. 此windows副本不是正版解决方法
  5. Linux文件系统命令 cat
  6. 在屏幕上将1234逐位打印出来1,2,3,4
  7. spring scheduled定时任务
  8. 访问器中谨慎返回引用类型对象
  9. Win2003 Server磁盘配额揭密启用篇
  10. SpringBoot AOP注解写法
  11. 检测应用位于后台,并弹出手势解锁,解锁成功进入主界面
  12. cmd模式下cd目录,文件夹命名有空格无法切换问题解决方法
  13. SQLiteSpy导入db文件(导入数据库文件)
  14. locust工具学习笔记(三)-Tasks属性、tag修饰符、TaskSet类
  15. jQuery - 实例- 小小动画导航栏
  16. lambda函数--(Python实现货币兑换案例)
  17. plsql-数据查询(二、条件查询)
  18. OptiSystem应用:100 Gbps DP QPSK
  19. 程序员 破解获取已连接过的WiFi密码
  20. 从https://www.kanunu8.com/book3/6879/爬取《动物农场》所有章节

热门文章

  1. 这件装备让你排位上分有如神助,vivo X20王者荣耀限量版图评
  2. Python任务调度模块APScheduler
  3. 这行简单的网址可令Chrome立马崩溃
  4. 你从 Kotlin 中 get 了多少技能了?
  5. Java Web文件下载
  6. /^(0|[1-9]\d*)([.]5)?$/ 在PHP正则中是什么意思 ?
  7. win10系统下安装Linux虚拟机以及在虚拟机上安装Ubuntu
  8. POI读取excel文件
  9. 《面向模式的软件体系结构3-资源管理模式》读书笔记(3)--- Eager Acquisition模式...
  10. 通过修改PHP源代码解决Nginx下WebShell跨站的问题