// // ImageGalleryContentViewController.swift // Tusker // // Created by Shadowfacts on 3/17/24. // Copyright © 2024 Shadowfacts. All rights reserved. // import UIKit import GalleryVC import Pachyderm import TuskerComponents class ImageGalleryContentViewController: UIViewController, GalleryContentViewController { let url: URL let caption: String? let originalData: Data? let image: UIImage let gifController: GIFController? init(url: URL, caption: String?, originalData: Data?, image: UIImage, gifController: GIFController?) { self.url = url self.caption = caption self.originalData = originalData self.image = image self.gifController = gifController super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() let imageView = GIFImageView(image: image) imageView.translatesAutoresizingMaskIntoConstraints = false imageView.contentMode = .scaleAspectFit view.addSubview(imageView) NSLayoutConstraint.activate([ imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor), imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor), imageView.topAnchor.constraint(equalTo: view.topAnchor), imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) if let gifController { gifController.attach(to: imageView) } } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) if let gifController { gifController.startAnimating() } } // MARK: GalleryContentViewController var container: (any GalleryVC.GalleryContentViewControllerContainer)? var contentSize: CGSize { image.size } var activityItemsForSharing: [Any] { if let data = originalData ?? image.pngData() { return [ImageActivityItemSource(data: data, url: url, image: image)] } else { return [] } } }