// // LottieLoadingView.swift // suixinkan // import Lottie import SnapKit import UIKit /// Lottie 循环 Loading 动画视图,使用 `Resources/Lottie/loading.json`。 final class LottieLoadingView: UIView { private let animationView: LottieAnimationView override init(frame: CGRect) { animationView = LottieLoadingView.makeAnimationView() super.init(frame: frame) addSubview(animationView) animationView.snp.makeConstraints { make in make.edges.equalToSuperview() } } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } /// 开始循环播放。 func startAnimating() { animationView.loopMode = .loop animationView.play() } /// 停止播放。 func stopAnimating() { animationView.stop() } private static func makeAnimationView() -> LottieAnimationView { if let url = loadingAnimationURL() { return LottieAnimationView(filePath: url.path) } return LottieAnimationView() } private static func loadingAnimationURL() -> URL? { Bundle.main.url(forResource: "loading", withExtension: "json", subdirectory: "Resources/Lottie") ?? Bundle.main.url(forResource: "loading", withExtension: "json") } }