@@ -5,14 +5,25 @@ protocol ImageViewerControllerDelegate:class {
55 func imageViewerDidClose( _ imageViewer: ImageViewerController )
66}
77
8- class ImageViewerController : UIViewController , UIGestureRecognizerDelegate {
8+ class ImageViewerController : UIViewController , UIGestureRecognizerDelegate {
99
1010 var index : Int = 0
1111 weak var delegate : ImageViewerControllerDelegate ?
1212 var imageItem : ImageItem !
1313 var animateOnDidAppear : Bool = false
1414 var sourceView : UIImageView ?
15- var backgroundView : UIView ?
15+
16+ var backgroundView : UIView ? {
17+ guard let _parent = parent as? ImageCarouselViewController
18+ else { return nil }
19+ return _parent. backgroundView
20+ }
21+
22+ var navBar : UINavigationBar ? {
23+ guard let _parent = parent as? ImageCarouselViewController
24+ else { return nil }
25+ return _parent. navBar
26+ }
1627
1728 private var top : NSLayoutConstraint !
1829 private var leading : NSLayoutConstraint !
@@ -144,12 +155,20 @@ class ImageViewerController : UIViewController, UIGestureRecognizerDelegate {
144155 pinchRecognizer. numberOfTouchesRequired = 2
145156 scrollView. addGestureRecognizer ( pinchRecognizer)
146157
158+ let singleTapGesture = UITapGestureRecognizer (
159+ target: self , action: #selector( didSingleTap ( _: ) ) )
160+ singleTapGesture. numberOfTapsRequired = 1
161+ singleTapGesture. numberOfTouchesRequired = 1
162+ scrollView. addGestureRecognizer ( singleTapGesture)
163+
147164 let doubleTapRecognizer = UITapGestureRecognizer (
148165 target: self , action: #selector( didDoubleTap ( _: ) ) )
149166 doubleTapRecognizer. numberOfTapsRequired = 2
150167 doubleTapRecognizer. numberOfTouchesRequired = 1
151168 scrollView. addGestureRecognizer ( doubleTapRecognizer)
152169 scrollView. maximumZoomScale = 4.0
170+
171+ singleTapGesture. require ( toFail: doubleTapRecognizer)
153172 }
154173
155174 func updateMinZoomScaleForSize( _ size: CGSize ) {
@@ -233,6 +252,15 @@ class ImageViewerController : UIViewController, UIGestureRecognizerDelegate {
233252 scrollView. setZoomScale ( newZoomScale, animated: true )
234253 }
235254
255+ @objc
256+ func didSingleTap( _ recognizer: UITapGestureRecognizer ) {
257+
258+ let currentNavAlpha = self . navBar? . alpha ?? 0.0
259+ UIView . animate ( withDuration: 0.235 ) {
260+ self . navBar? . alpha = currentNavAlpha > 0.5 ? 0.0 : 1.0
261+ }
262+ }
263+
236264 @objc
237265 func didDoubleTap( _ recognizer: UITapGestureRecognizer ) {
238266 let pointInView = recognizer. location ( in: imageView)
@@ -289,14 +317,12 @@ extension ImageViewerController {
289317 index: Int ,
290318 imageItem: ImageItem ,
291319 sourceView: UIImageView ? ,
292- backgroundView: UIView ? ,
293320 delegate: ImageViewerControllerDelegate ) -> ImageViewerController {
294321
295322 let newVC = ImageViewerController ( )
296323 newVC. index = index
297324 newVC. imageItem = imageItem
298325 newVC. sourceView = sourceView
299- newVC. backgroundView = backgroundView
300326 newVC. delegate = delegate
301327 return newVC
302328 }
0 commit comments