这些例子都是CABasicAnimation的一些简单实现的动画,例如移动、透明度、翻转等等。方法里面传入一个CALayer类或者子类就可以了。

下面是用swift实现的,这些方法我们也可以用作公共类来调用:

    //移动动画position
func addLayerAnimationPosition(layer: CALayer) {
let animation = CABasicAnimation(keyPath: "position")
//开始的位置
animation.fromValue = NSValue(CGPoint: layer.position)
//移动到的位置
animation.toValue = NSValue(CGPoint: CGPointMake(, ))
//持续时间
animation.duration =
//运动后的位置保持不变(layer的最后位置是toValue)
animation.removedOnCompletion = false
animation.fillMode = kCAFillModeForwards //添加动画
layer.addAnimation(animation, forKey: "addLayerAnimationPosition")
} //透明度 opacity
func addLayerAnimationOpacity(layer: CALayer) {
let animation = CABasicAnimation(keyPath: "opacity")
animation.fromValue =
animation.toValue =
animation.duration = layer.addAnimation(animation, forKey: "addLayerAnimationOpacity") } //变大与位置 bounds
func addLayerAnimationBounds(layer:CALayer) {
let animation = CABasicAnimation(keyPath: "bounds")
animation.toValue = NSValue(CGRect:CGRectMake(, , , ))
animation.duration =
animation.repeatCount = layer.addAnimation(animation, forKey: "addLayerAnimationBounds")
} //由小变大 bounds.size
func addLayerAnimationBoundsSize(layer:CALayer) {
let animation = CABasicAnimation(keyPath: "bounds.size")
animation.fromValue = NSValue(CGSize: layer.bounds.size)
animation.toValue = NSValue(CGSize:CGSizeMake(layer.bounds.size.width+, layer.bounds.size.height+))
animation.duration =
animation.repeatCount = layer.addAnimation(animation, forKey: "addLayerAnimationBoundsSize")
} //改变颜色 backgroundColor
func addLayerAnimationBackgroundColor(layer:CALayer) {
let animation = CABasicAnimation(keyPath: "backgroundColor")
animation.toValue = UIColor.blueColor().CGColor
animation.duration =
animation.repeatCount = layer.addAnimation(animation, forKey: "addLayerAnimationMargin")
} //渐变圆角 cornerRadius
func addLayerAnimationCornerRadius(layer:CALayer) {
let animation = CABasicAnimation(keyPath: "cornerRadius")
animation.toValue =
animation.duration =
animation.repeatCount = layer.addAnimation(animation, forKey: "addLayerAnimationCornerRadius")
} //改变边框border的大小(图形周围边框,border默认为黑色), borderWidth
func addLayerAnimationBorderWidth(layer:CALayer) {
let animation = CABasicAnimation(keyPath: "borderWidth")
animation.toValue =
animation.duration =
animation.repeatCount = layer.addAnimation(animation, forKey: "addLayerAnimationBorderWidth")
} //改变layer内容(图片),注意如果想要达到改变内容的动画效果,首先在运行动画之前定义好layer的contents contents
func addLayerAnimationContents(layer:CALayer) {
let animation = CABasicAnimation(keyPath: "contents")
let toImage = UIImage.init(named: "通车辆设计矢量素材-06.png")?.CGImage
animation.toValue = toImage
animation.duration =
animation.repeatCount = layer.addAnimation(animation, forKey: "addLayerAnimationBounds")
} //缩放、放大 transform.scale
func addLayerAnimationTransformScale(layer:CALayer) {
let animation = CABasicAnimation(keyPath: "transform.scale")
//开始时的倍率
animation.fromValue = 1.0
//结束时的倍率
animation.toValue = 0.5
animation.duration =
animation.repeatCount =
animation.autoreverses = true layer.addAnimation(animation, forKey: "addLayerAnimationScale")
} //旋转动画(翻转,沿着X轴) transform.rotation.x
func addLayerAnimationTranformRotationX(layer: CALayer) {
let animation = CABasicAnimation(keyPath: "transform.rotation.x")
//旋转180度 = PI
animation.toValue = M_PI
animation.duration =
animation.repeatCount =
//这里我们可以添加可以不添加,添加一个缓慢进出的动画效果(int/out)。当不添加时,匀速运动,会使用kCAMediaTimingFunctionLinear;当添加时,layer会在开始和结束时比较缓慢
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) layer.addAnimation(animation, forKey: "addLayerAnimationTranformRotationX")
} //旋转动画(翻转,沿着Y轴) transform.rotation.y
func addLayerAnimationTranformRotationY(layer: CALayer) {
let animation = CABasicAnimation(keyPath: "transform.rotation.y")
//旋转180度 = PI
animation.toValue = M_PI
animation.duration =
animation.repeatCount =
//这里我们可以添加可以不添加,添加一个缓慢进出的动画效果(int/out)。当不添加时,匀速运动,会使用kCAMediaTimingFunctionLinear;当添加时,layer会在开始和结束时比较缓慢
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) layer.addAnimation(animation, forKey: "addLayerAnimationTranformRotationY")
} //旋转动画(沿着Z轴) transform.rotation.z
func addLayerAnimationTranformRotationZ(layer: CALayer) {
let animation = CABasicAnimation(keyPath: "transform.rotation.z")
//旋转360度 = PI*2
animation.toValue = M_PI*
animation.duration =
animation.repeatCount =
//这里我们可以添加可以不添加,添加一个缓慢进出的动画效果(int/out)。当不添加时,匀速运动,会使用kCAMediaTimingFunctionLinear;当添加时,layer会在开始和结束时比较缓慢
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) layer.addAnimation(animation, forKey: "addLayerAnimationTranformRotationZ")
} //横向移动(沿着X轴) transform.translation.x
func addLayerAnimationTranformTranslationX(layer: CALayer) {
let animation = CABasicAnimation(keyPath: "transform.translation.x")
animation.toValue =
animation.duration =
animation.repeatCount =
//这里我们可以添加可以不添加,添加一个缓慢进出的动画效果(int/out)。当不添加时,匀速运动,会使用kCAMediaTimingFunctionLinear;当添加时,layer会在开始和结束时比较缓慢
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) layer.addAnimation(animation, forKey: "addLayerAnimationTranformTranslationX")
} //纵向移动(沿着Y轴) transform.translation.y
func addLayerAnimationTranformTranslationY(layer: CALayer) {
let animation = CABasicAnimation(keyPath: "transform.translation.y")
animation.toValue =
animation.duration =
animation.repeatCount =
//这里我们可以添加可以不添加,添加一个缓慢进出的动画效果(int/out)。当不添加时,匀速运动,会使用kCAMediaTimingFunctionLinear;当添加时,layer会在开始和结束时比较缓慢
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) layer.addAnimation(animation, forKey: "addLayerAnimationTranformTranslationY")
}

如果我们只要看keypath的值,我们可以看到下面文章

http://www.cnblogs.com/alunchen/p/5300075.html

可以关注本人的公众号,多年经验的原创文章共享给大家。

IOS Animation-CABasicAnimation例子(简单动画实现)的更多相关文章

  1. [iOS Animation]-CALayer 隐式动画

    隐式动画 按照我的意思去做,而不是我说的. -- 埃德娜,辛普森 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情.但是动画是Core Animation库一个非常显著的 ...

  2. iOS Animation 主流炫酷动画框架(特效)收集整理 #91

    https://github.com/sxyx2008/DevArticles/issues/91

  3. ios之CABasicAnimation

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

  4. [iOS Animation]-CALayer 显示动画

    显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并不能涵盖所有的动 ...

  5. Swift 实现iOS Animation动画教程

    这是一篇翻译文章.原文出处:http://www.raywenderlich.com/95910/uiview-animation-swift-tutorial 动画( animation)是iOS用 ...

  6. iOS CAReplicatorLayer 简单动画

    代码地址如下:http://www.demodashi.com/demo/11601.html 写在最前面,最近在看学习的时候,偶然间发现一个没有用过的Layer,于是抽空研究了下,本来应该能提前记录 ...

  7. iOS开发CABasicAnimation动画理解

    1.CALayer简介 CALayer是个与UIView很类似的概念,同样有backgroundColor.frame等相似的属性,我们可以将UIView看做一种特殊的CALayer.但实际上UIVi ...

  8. iOS Core Animation学习总结(3)--动画的基本类型

    一. CABasicAnimation (基础动画) 移位: CABasicAnimation *animation = [CABasicAnimation animation]; //keyPath ...

  9. ios animation 动画效果实现

    1.过渡动画 CATransition CATransition *animation = [CATransition animation]; [animation setDuration:1.0]; ...

随机推荐

  1. APP审核被拒,原因总结

    今天早上,突然看到上周末提交的APP,审核被拒了.原以为是因为IPV6审核没过,后来查看原因后发现是,app的3张展示图里面,有些内容显示的有:测试XX等字眼.苹果说提交的版本不能是含有 test,t ...

  2. POST 500 Internal Server Error

    今天调试公司web后台时发现一个POST 500 Internal Server Error的错误. 本来VS本地调试没有发现这个问题,然后发布到服务器时才出现了.然后找了好久没找到什么原因,再仔细在 ...

  3. DBNull 与 求和方法

    public int CountMoney() { if (!DBNull.Value.Equals(Eval("LawyerMoney")) && !DBNull ...

  4. ajax基础一

    AJAX AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJA ...

  5. checkbox、全选反选,获取值

    <input id="Chk_All" onclick="CheckAll()" type="checkbox" /> < ...

  6. 原生ajax基础

    /*ajax对象的成员常用属性:responseText:以字符串形式接收服务器端返回的信息responseXML:以Xml Document对象形式接收服务器返回的信息readyState:返回当前 ...

  7. 关于git(分布式版本控制系统)的一些操作和命令

    很久没上博客写东西了,今天闲着无聊就不想敲代码,所以看了看有没有一些好玩的东西,这不让我发现了git这个源代码版本控制工具,话不多说,就让我来简单的分享一下它的一些操作和命令以及命令所执行的含义吧! ...

  8. 如何防止JAVA反射对单例类的攻击?

    在我的上篇随笔中,我们知道了创建单例类有以下几种方式: (1).饿汉式; (2).懒汉式(.加同步锁的懒汉式.加双重校验锁的懒汉式.防止指令重排优化的懒汉式); (3).登记式单例模式; (4).静态 ...

  9. BruteXSS:XSS暴力破解神器

    ×01 BruteXSS BruteXSS是一个非常强大和快速的跨站点脚本暴力注入.它用于暴力注入一个参数.该BruteXSS从指定的词库加载多种有效载荷进行注入并且使用指定的载荷和扫描检查这些参数很 ...

  10. Python Charts库的使用

    博客园格式不太好看,可以去本人CSDN博客 http://blog.csdn.net/ashic/article/details/52598664 http://nbviewer.jupyter.or ...