You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// // FilepathImageProvider.swift // lottie-swift // // Created by Brandon Withrow on 2/1/19. //
import Foundation #if os(iOS) || os(tvOS) || os(watchOS) || targetEnvironment(macCatalyst) import UIKit
/// Provides an image for a lottie animation from a provided Bundle. public class FilepathImageProvider: AnimationImageProvider {
// MARK: Lifecycle
/// Initializes an image provider with a specific filepath. /// /// - Parameter filepath: The absolute filepath containing the images. /// public init(filepath: String) { self.filepath = URL(fileURLWithPath: filepath) }
public init(filepath: URL) { self.filepath = filepath }
// MARK: Public
public func imageForAsset(asset: ImageAsset) -> CGImage? { if asset.name.hasPrefix("data:"), let url = URL(string: asset.name), let data = try? Data(contentsOf: url), let image = UIImage(data: data) { return image.cgImage }
let directPath = filepath.appendingPathComponent(asset.name).path if FileManager.default.fileExists(atPath: directPath) { return UIImage(contentsOfFile: directPath)?.cgImage }
let pathWithDirectory = filepath.appendingPathComponent(asset.directory).appendingPathComponent(asset.name).path if FileManager.default.fileExists(atPath: pathWithDirectory) { return UIImage(contentsOfFile: pathWithDirectory)?.cgImage }
LottieLogger.shared.warn("Could not find image \"\(asset.name)\" in bundle") return nil }
// MARK: Internal
let filepath: URL } #endif
|