Skip to content

Instantly share code, notes, and snippets.

@mbernson
Created January 20, 2022 09:05
Show Gist options
  • Save mbernson/84e6a74d266b3ec94a6c766edf9400bb to your computer and use it in GitHub Desktop.
Save mbernson/84e6a74d266b3ec94a6c766edf9400bb to your computer and use it in GitHub Desktop.
Lottie view wrapper in SwiftUI
//
// LottieView.swift
//
// Created by Mathijs Bernson on 27/10/2021.
//
import SwiftUI
import Lottie
struct LottieView: UIViewRepresentable {
let animation: Lottie.Animation?
let loopMode: LottieLoopMode
let contentMode: UIView.ContentMode
init(
animation: Lottie.Animation?,
loopMode: LottieLoopMode,
contentMode: UIView.ContentMode
) {
self.animation = animation
self.loopMode = loopMode
self.contentMode = contentMode
}
func makeUIView(context: Context) -> UIView {
let animationView = AnimationView()
animationView.contentMode = contentMode
animationView.animation = animation
animationView.loopMode = loopMode
animationView.play()
let uiView = UIView(frame: .zero)
animationView.translatesAutoresizingMaskIntoConstraints = false
uiView.addSubview(animationView)
NSLayoutConstraint.activate([
uiView.topAnchor.constraint(equalTo: animationView.topAnchor),
uiView.bottomAnchor.constraint(equalTo: animationView.bottomAnchor),
uiView.leadingAnchor.constraint(equalTo: animationView.leadingAnchor),
uiView.trailingAnchor.constraint(equalTo: animationView.trailingAnchor),
uiView.widthAnchor.constraint(equalTo: animationView.widthAnchor),
uiView.heightAnchor.constraint(equalTo: animationView.heightAnchor),
])
return uiView
}
func updateUIView(_ animationView: UIView, context: Context) {
//
}
}
struct LottieView_Previews: PreviewProvider {
static var previews: some View {
LottieView(
animation: .named("MyAnimation"),
loopMode: .loop,
contentMode: .scaleAspectFill
)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment