| import UIKit |
| class ImagePlayerView: UIImageView { |
| |
| let view: UIView = { |
| let view = UIView() |
| view.backgroundColor = .blue |
| |
| return view |
| }() |
| |
| let activityIndicatorView: UIActivityIndicatorView = { |
| let aiv = UIActivityIndicatorView(activityIndicatorStyle: .white) |
| aiv.translatesAutoresizingMaskIntoConstraints = false |
| aiv.startAnimating() |
| return aiv |
| }() |
| |
| let controlsContainerView: UIView = { |
| let view = UIView() |
| view.backgroundColor = UIColor(white: 0, alpha : 1) |
| return view |
| }() |
| |
| var fullImageView: UIImageView = { |
| |
| let iv = UIImageView() |
| iv.contentMode = .scaleAspectFit |
| |
| iv.isUserInteractionEnabled = true |
| iv.translatesAutoresizingMaskIntoConstraints = false |
| |
| return iv |
| }() |
| |
| |
| |
| override init(frame: CGRect){ |
| super.init(frame: frame) |
| |
| |
| controlsContainerView.frame = frame |
| addSubview(controlsContainerView) |
| |
| controlsContainerView.addSubview(fullImageView) |
| |
| fullImageView.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true |
| fullImageView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true |
| fullImageView.widthAnchor.constraint(equalToConstant: 50).isActive = true |
| fullImageView.heightAnchor.constraint(equalToConstant: 50).isActive = true |
| |
| } |
| |
| |
| required init?(coder aDecoder: NSCoder) { |
| fatalError("init(coder:) has not been implemented") |
| } |
| |
| |
| |
| } |
| class ImageLaucher:NSObject{ |
| |
| func showImage(startingImageView : UIImageView){ |
| |
| |
| let startFrame = startingImageView.superview?.convert(startingImageView.frame, to: nil) |
| |
| let zoomingImageView = UIImageView(frame: startFrame!) |
| zoomingImageView.backgroundColor = .red |
| zoomingImageView.image = startingImageView.image |
| |
| zoomingImageView.isUserInteractionEnabled = true |
| let gesture = UITapGestureRecognizer(target: self, action: #selector(handleZoomOut(sender:))) |
| zoomingImageView.addGestureRecognizer(gesture) |
| |
| |
| if let keyWindow = UIApplication.shared.keyWindow { |
| let blackBackgroundView = UIView(frame: keyWindow.frame) |
| blackBackgroundView.backgroundColor = .black |
| |
| blackBackgroundView.alpha = 0 |
| |
| keyWindow.addSubview(blackBackgroundView) |
| |
| keyWindow.addSubview(zoomingImageView) |
| |
| UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: { |
| |
| blackBackgroundView.alpha = 1 |
| let height = (startFrame?.height)! / startFrame!.width * keyWindow.frame.width |
| |
| zoomingImageView.frame = CGRect(x: 0, y: 0, width: keyWindow.frame.width, height: height) |
| zoomingImageView.center = keyWindow.center |
| |
| }, completion: nil) |
| |
| } |
| |
| |
| } |
| |
| func handleZoomOut(sender: UITapGestureRecognizer) { |
| print("print zoom out") |
| |
| |
| } |
| |
| |
| } |