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

SwiftUI中如何让动画变慢?动画卡顿问题求助

问题分析与解决

你遇到的动画冻结问题,核心是只设置了动画延迟(delay),但未调整动画时长(duration)。默认的withAnimation动画时长很短,加上延迟后,视觉上会呈现“等待后突然跳转”的卡顿感,而非预期的流畅慢动画。

修复方案

给动画明确添加时长参数,搭配延迟即可实现平缓流畅的效果:

Button("forward") {
    withAnimation(.easeInOut(duration: 2).delay(1)) {
        isForward.toggle()
    }
}
  • duration: 2 表示动画全程持续2秒,可根据需求调整(比如1.5秒、3秒)
  • 保留delay(1)会在点击按钮1秒后才启动动画,整体节奏更符合“慢且流畅”的需求

额外排查点

如果调整时长后仍存在冻结情况:

  • 检查isForward绑定的视图是否正确响应状态变化:确认使用了@State/@Binding修饰器,且视图的动态属性(如offset、opacity、frame)是基于isForward的取值变化的
  • 避免在动画闭包内执行耗时操作,所有状态变更需保持轻量,否则会阻塞UI线程引发冻结

内容的提问来源于stack exchange,提问作者Steven-Carrot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:45:49