可以通过以下步骤实现:
@State
属性包装器来创建一个布尔类型的变量,例如isAnimating
。if
语句来检查isAnimating
的值。如果为true
,则显示一个带有动画效果的视图,否则显示一个静态的视图。offset
修饰符来实现水平移动。可以将一个CGFloat
类型的变量作为参数传递给offset
修饰符,控制视图的水平偏移量。例如,可以使用offset(x: 100)
将视图向右移动100个点。isAnimating
的值设置为false
。可以在适当的时机,例如按钮点击事件或其他条件满足时,将isAnimating
设置为false
。以下是一个示例代码,演示如何停止SwiftUI动画的水平移动:
import SwiftUI
struct ContentView: View {
@State private var isAnimating = true
var body: some View {
VStack {
if isAnimating {
Rectangle()
.fill(Color.blue)
.frame(width: 100, height: 100)
.offset(x: 100)
.animation(.easeInOut(duration: 1))
} else {
Rectangle()
.fill(Color.blue)
.frame(width: 100, height: 100)
}
Button(action: {
isAnimating.toggle()
}) {
Text("停止动画")
.foregroundColor(.white)
.padding()
.background(Color.blue)
.cornerRadius(10)
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在上面的示例中,当点击按钮时,isAnimating
的值会切换,从而停止或重新开始动画的水平移动。
领取专属 10元无门槛券
手把手带您无忧上云