SwiftUI如何实现按钮触发变量0.01秒内从0平滑过渡到1?
实现SwiftUI中音量的0.01秒平滑过渡
可以实现,利用SwiftUI的withAnimation并自定义动画时长就能完成,这样能让volume变量在指定时间内从当前值平滑插值到目标值,避免音量突变产生的咔哒声。
修改后的代码如下:
struct ContentView: View { @State var volume: Float = 0 var body: some View { VStack(spacing: 50) { Text(String(format: "%.4f", volume)) // 格式化显示,更清晰看到过渡过程 Button("1") { withAnimation(.linear(duration: 0.01)) { volume = 1 } } Button("0") { withAnimation(.linear(duration: 0.01)) { volume = 0 } } } } }
关键说明:
- 使用
withAnimation(.linear(duration: 0.01))包裹变量赋值操作,强制让volume在0.01秒内完成线性过渡。选择线性动画是因为短时间内线性变化最贴合音量平滑调节的需求,避免缓动曲线带来的变速感。 - 对
Text做了格式化处理,保留四位小数,能更直观看到数值的平滑变化过程。 - 这种方式依赖SwiftUI的自动动画绑定,
@State变量的变化会自动驱动视图更新,同时完成数值的插值计算。
内容的提问来源于stack exchange,提问作者Peter_22
相关产品推荐
相关产品推荐

