About LottieView
LottieView is a Wrapper around Lottie in SwiftUI that allows chaining animations & triggering callbacks at certain frames
Requirements
- iOS 13.0
- Swift 5+
Demo
CleanShot.2022-01-23.at.22.55.52.mp4
Dependencies
- Lottie
Installation
Swift Package Manager (SPM)
Usage
var body: some View {
VStack {
/* Lottie Wrapping Begins */
LottieView(animation: .splash /* 1 */, animationFramesHandlers: [
.init(startFrame: 0, endFrame: 80, onComplete: { didFinish in // 2
guard didFinish else { return }
withAnimation(.spring()) {
showFooterText = true // 3
}
}),
.init(startFrame: 80, endFrame: 147, onComplete: { didFinish in
guard didFinish else { return }
withAnimation {
finishSplash = true
}
})
])
/* Lottie Wrapping Ends */
if showFooterText {
Text("Al Najd".localized)
.font(.pTitle2.bold())
.foregroundColor(.mono.offblack)
.opacity(showFooterText ? 1 : 0)
.offset(y: showFooterText ? 0 : 100)
}
if showFooterText {
Text("The Compass towards discipline \nwith Allah")
.font(.pHeadline)
.foregroundColor(.mono.label)
.multilineTextAlignment(.center)
.opacity(showFooterText ? 1 : 0)
.offset(y: showFooterText ? 0 : 100)
}
}.background(
Color
.primary
.background
.ignoresSafeArea()
)
}
In your View code
- You pass the JSON file name
- set the frames and if you want to take action in them, the default is to play from start to end with no callbacks
- handle happy and cases where animation didn't finish
Known Issues
- None so far
Contributions
You know the drill, Fork, Make your edits, and open a PR if you want