You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:02:47