Create a Repeating Animation in SwiftUI
Written by Team Kodeco
Have you ever wanted to make an animation loop continuously? SwiftUI has a built-in way to create a repeating animation that automatically restarts after its duration has completed. In this cookbook entry, you’ll learn how to make a repeating animation in SwiftUI.
To create a repeating animation, you can use the repeatForever
method on an animation object. Let’s see how it works in practice:
struct ContentView: View {
@State private var isAnimating = false
var body: some View {
Circle()
.fill(.blue)
.frame(width: 50, height: 50)
.scaleEffect(isAnimating ? 1.5 : 1)
.animation(
isAnimating ?
.easeInOut(duration: 1).repeatForever(autoreverses: true) :
.default,
value: isAnimating
)
.onAppear {
isAnimating = true
}
}
}
Your preview should look like this:
In this example, you have a blue circle that scales up and down continuously. You use the repeatForever
method to make the animation repeat indefinitely. By setting autoreverses
to true
, the animation will also reverse itself after each cycle, giving a smooth bouncing effect.
To start the animation, you use the onAppear
modifier to set the initial state of isAnimating
to true
. This will trigger the animation to start when the view appears.
And that’s it! With just a few lines of code, you can create a repeating animation that adds some extra flair to your user interface.