无限旋转动画
我创建了一个名为rotateImageView的视图,添加旋转代码如下
let animation = CABasicAnimation(keyPath: "transform.rotation")
animation.toValue = 2 * Double.pi
animation.repeatCount = MAXFLOAT
animation.duration = 0.3
animation.isRemovedOnCompletion = false
rotateImageView.layer.add(animation, forKey: nil)
效果:(gif不是很流畅)
无限平移
在实际使用中,我发现layer动画在切换界面后再回到有layer动画的界面,layer动画不会再动画了,上面的旋转动画也是一样,我暂时找到的解决方法是添加时加上动画的key,在添加前先移除原来的动画。
代码:
//我创建了一个centerImageView的视图并定义了一个cellAnimationKey
//每次视图出现时先移除动画再添加动画
centerImageView.layer.removeAnimation(forKey: cellAnimationKey)
centerImageView.layer.add(createAnimation(), forKey: cellAnimationKey)
fileprivate func createAnimation() -> CAAnimation {
let animation = CABasicAnimation(keyPath: "transform.translation.x")
animation.fromValue = 0
animation.toValue = kScreenWidth
animation.duration = 6
animation.repeatCount = MAXFLOAT
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animation.fillMode = kCAFillModeForwards
animation.isRemovedOnCompletion = false
return animation
}
效果:(gif是真的不流畅)