iOS动画编程-Layer动画[ 2 ] Getting Started with Layer Animations

本节将介绍CALayer与Core Animation基础,找找通过Layer操作动画的感觉,你将学到如何移动、隐藏显示Layer的方法

animation properties

Layer中很多动画属性的使用方法与View类似,例如frame、position、opacity等,另外还提供了border、shadow等新属性,接下来我们来看看Layer中给了我们什么可以动画变化的属性

Position and size

  • bound
    Layer的范围

  • position
    Layer在父Layer中的的位置,可以分别修改x、y
    -transform
    改变中国属性可以移动、缩放、旋转Layer,甚至可以加入3D动画

Border

  • borderColor
    边框颜色

  • borderWidth
    边框宽度

  • cornerRadius
    角的弧度,可以实现圆角

Shadow

  • shadowOffset
    改变这个属性可以改变阴影与Layer的远近

  • shadowOpacity
    改变这个属性可以改变阴影的显示

  • shadowPath
    改变Layer shadow的形状,可以加入各种各样的3D效果

  • shadowRadius
    改变阴影的模糊程度,在模拟物体朝向屏幕运动或远离屏幕的动画中使用较多

Contents

  • content
    改变这个属性可以改变Layer内含的TIFF、PNG原始数据

  • mask
    改变这个属性可以改变图像上的遮盖

  • opacity
    改变内容的透明度

以上的属性就已经足够你实现一些基于Layer的动画了,下面我们通过Demo练习一下

First Layer Animation

这次我们的Demo利用Layer Animation替换之前登录页面Demo中的View Animation
我们从heading开始,在viewWillAppearviewDidAppear方法中删除有关代码(对于控件初位置的设定在动画中实现)

创建动画

我们在在viewDidAppear方法中添加动画

    let flyRight = CABasicAnimation(keyPath: "position.x") 
    flyRight.fromValue = -view.bounds.size.width/2 
    flyRight.toValue = view.bounds.size.width/2 
    flyRight.duration = 0.5

CoreAnimation中的对象都是一些简单的数据模型,我们只需实例化并设置相应的数据即可
一个CA实例描述了具体的Layer动画,你可以随时使用这个动画
这些动画实例并不急于具体的Layer,你可以在需要的时候重用代码,每次添加动画时都会创建它的一份拷贝
对于一个CA对象,你可以很方便的通过keypath参数具体说明动画的属性
随后我们设置了fromValuetoValue属性调整了动画的开始与结束
最后我们设置了动画进行的时间

把动画添加到layer上

通过上面的代码我们已经创建了动画,现在我们来把动画添加到具体的layer上

    heading.layer.addAnimation(flyRight, forKey: nil)

我们这里调用的addAnimation(_: forKey:)方法用于将CA对象创建一个拷贝并且应用在layer上,第二个参数forKey仅仅用于动画的使用者,通过这个参数可以实现改变、停止这个动画等操作。

    原文作者:Hydrogen
    原文地址: https://segmentfault.com/a/1190000004172636
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞