[英]Changing animation's duration dynamically in SwiftUI
我正在嘗試在動畫時更改動畫的持續時間。 我有兩個屬性 - isAnimating
確定 animation 是否應該運行和duration
。 有一個正在動畫的視圖,按鈕切換isAnimating
和 Slider 綁定到持續時間 state。 當 animation 正在播放並且我使用 Slider 更改值時,持續時間不會改變。 有什么方法可以實現我想要的嗎?
struct ContentView: View {
@State var isAnimating = false
@State var duration = 2.0
var body: some View {
VStack {
Spacer()
Circle()
.frame(width: 50.0, height: 50.0)
.scaleEffect(isAnimating ? 2.0 : 1.0)
.animation(
isAnimating ?
Animation.easeOut(duration: duration).repeatForever(autoreverses: false) :
.default
)
Spacer()
Button(
action: { self.isAnimating.toggle() },
label: { Text("Tap") }
)
Spacer()
Slider(value: $duration, in: (0.1 ... 5.0))
.padding([.horizontal], 20.0)
.padding([.bottom], 50.0)
}
}
}
我也嘗試了不同的方法,但總是有一些問題(例如動畫視圖閃爍)。
如果將 a.repeatForever() 修飾符添加到 animation 中,則 animation 將永遠運行(使用給定參數)。 唯一的可能是停止 animation 並“重新運行”一個新的 animation 並更改“持續時間”值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.