iOS动画(二):核心动画中的基础移动(Swift)

简单的移动

-
新建一个
CALayer。1 2 3 4 5 6 7 8 9 10lazy var redLayer: CALayer = { return self.createLayer() }() func createLayer() -> CALayer { let redLayer = CALayer() redLayer.position = CGPoint(x: 200, y: 200) redLayer.bounds = CGRect(x: 0, y: 0, width: 100, height: 100) redLayer.backgroundColor = UIColor.red.cgColor return redLayer } -
把新建的
CALayer添加的view的layer中。view.layer.addSublayer(redLayer) -
遵守协议
CAAnimationDelegateclass BasicPostionViewController: UIViewController, CAAnimationDelegate { -
创建动画
CABasicAnimation,并添加的CALayer中。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19func createCABasicAnimation() -> CABasicAnimation { let basicAni = CABasicAnimation() // 设置动画属性 basicAni.keyPath = "position" basicAni.fromValue = NSValue.init(cgPoint: CGPoint(x: 0, y: 0)) basicAni.toValue = NSValue.init(cgPoint: CGPoint(x: 300, y: 300)) basicAni.duration = 2 basicAni.fillMode = kCAFillModeForwards basicAni.isRemovedOnCompletion = false basicAni.delegate = self return basicAni }- forKey 是动画对象的名字,只是用来标识,没有特殊意义。
稍微复杂的移动

原理和上面相同,都是先创建CALayer,然后添加CABasicAnimation。
|
|
- 1
timingFunction代表移动模式:kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。
参考: