如何在UIView旋转动画结束时实现减速效果?
给旋转动画添加结束减速效果的修改方案
嘿,要实现动画结束时的减速效果,只需要给你的CABasicAnimation添加一个缓出(ease-out)时间函数就可以啦!这种时间函数会让动画在开始时保持较快速度,临近结束时逐渐减速,完美贴合你的需求。
修改后的完整代码
extension UIView{ func rotate() { let rotation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z") rotation.fromValue = 0.0 // 注意:Core Animation旋转属性基于弧度,这里把25度转成弧度计算 rotation.toValue = 25 * CGFloat.pi / 180 rotation.duration = 1.5 rotation.isCumulative = true rotation.repeatCount = 1 // 核心修改:添加缓出时间函数,实现结束减速 rotation.timingFunction = CAMediaTimingFunction(name: .easeOut) self.layer.add(rotation, forKey: "rotationAnimation") } }
关键修改说明
rotation.timingFunction = CAMediaTimingFunction(name: .easeOut):这一行是实现减速的核心,系统预设的.easeOut时间函数对应“快启动、慢收尾”的动画曲线,直接调用就能让旋转在结束阶段自然减速。- 额外小提示:你原来的
toValue = 25是角度数值,但Core Animation的旋转参数是基于弧度的,所以转成25 * CGFloat.pi / 180才能得到你预期的25度旋转效果哦~
内容的提问来源于stack exchange,提问作者Vikas Suthar
相关产品推荐
相关产品推荐

