         v.contentMode = .scaleAspectFit
         v.isUserInteractionEnabled = true
         v.addGestureRecognizer(panGesture)
+        v.addGestureRecognizer(doubleTapGesture)
         return v
     }()
     
     private lazy var panGesture = UIPanGestureRecognizer(target: self, action: #selector(handleGesture(_:)))
+    private lazy var doubleTapGesture: UITapGestureRecognizer = {
+        let g = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTapGesture(_:)))
+        g.numberOfTapsRequired = 2
+        return g
+    }()
     
     private lazy var blurredView: UIVisualEffectView = {
         let v = UIVisualEffectView(effect: UIBlurEffect(style: .dark))

    private var animator: ImageViewerAnimator?
    //    private var isZooming = false
    //    var shouldDismiss = false
    var urlHandleClosure: ((URL) -> (UIImage?))?
    
    /// Create imageViewer with transition animation from view/imageview/cell...
    ///


//MARK: Helper
extension ImageViewerViewController {
    func calculateZoomRect(scale: CGFloat, center: CGPoint) -> CGRect {
        var zoomRect = CGRect.zero
        zoomRect.size.height = imageView.frame.size.height / scale
        zoomRect.size.width  = imageView.frame.size.width / scale
        let newCenter = scrollView.convert(center, from: imageView)
        zoomRect.origin.x = newCenter.x - (zoomRect.size.width / 2.0)
        zoomRect.origin.y = newCenter.y - (zoomRect.size.height / 2.0)
        return zoomRect
    }
    
    func aspectFitRect(forSize size: CGSize, insideRect: CGRect) -> CGRect {
        return AVMakeRect(aspectRatio: size, insideRect: insideRect)
    }
