58 lines
1.5 KiB
Swift
58 lines
1.5 KiB
Swift
import UIKit
|
|
|
|
open class LightboxImage {
|
|
|
|
open fileprivate(set) var image: UIImage?
|
|
open fileprivate(set) var imageURL: URL?
|
|
open fileprivate(set) var videoURL: URL?
|
|
open fileprivate(set) var imageClosure: (() -> UIImage)?
|
|
open var text: String
|
|
|
|
// MARK: - Initialization
|
|
|
|
internal init(text: String = "") {
|
|
self.text = text
|
|
}
|
|
|
|
public init(image: UIImage, text: String = "", videoURL: URL? = nil) {
|
|
self.image = image
|
|
self.text = text
|
|
self.videoURL = videoURL
|
|
}
|
|
|
|
public init(imageURL: URL, text: String = "", videoURL: URL? = nil) {
|
|
self.imageURL = imageURL
|
|
self.text = text
|
|
self.videoURL = videoURL
|
|
}
|
|
|
|
public init(imageClosure: @escaping () -> UIImage, text: String = "", videoURL: URL? = nil) {
|
|
self.imageClosure = imageClosure
|
|
self.text = text
|
|
self.videoURL = videoURL
|
|
}
|
|
|
|
open func addImageTo(_ imageView: UIImageView, completion: ((UIImage?) -> Void)? = nil) {
|
|
if let image = image {
|
|
imageView.image = image
|
|
completion?(image)
|
|
} else if let imageURL = imageURL {
|
|
guard let loadImage = LightboxConfig.loadImage else {
|
|
print("Lightbox: To use `imageURL`, you must use `LightboxConfig.loadImage`.")
|
|
imageView.image = nil
|
|
completion?(nil)
|
|
return
|
|
}
|
|
|
|
loadImage(imageView, imageURL, completion)
|
|
} else if let imageClosure = imageClosure {
|
|
let img = imageClosure()
|
|
imageView.image = img
|
|
completion?(img)
|
|
} else {
|
|
imageView.image = nil
|
|
completion?(nil)
|
|
}
|
|
}
|
|
}
|