瀏覽代碼

new view image

marinofaggiana 4 年之前
父節點
當前提交
f1d2137c9f

+ 0 - 20
Nextcloud.xcodeproj/project.pbxproj

@@ -38,9 +38,6 @@
 		F7063DED2199E55F003F38DA /* SVGKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7063DEC2199E55F003F38DA /* SVGKit.framework */; };
 		F7063DEF2199E568003F38DA /* CocoaLumberjack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7063DEE2199E568003F38DA /* CocoaLumberjack.framework */; };
 		F7063DF12199E56F003F38DA /* CocoaLumberjackSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7063DF02199E56E003F38DA /* CocoaLumberjackSwift.framework */; };
-		F70753E32542A99100972D44 /* NCZoomTransitionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70753E02542A99100972D44 /* NCZoomTransitionController.swift */; };
-		F70753E42542A99100972D44 /* NCZoomDismissalInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70753E12542A99100972D44 /* NCZoomDismissalInteractionController.swift */; };
-		F70753E52542A99100972D44 /* NCZoomAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70753E22542A99100972D44 /* NCZoomAnimator.swift */; };
 		F70753EB2542A99800972D44 /* NCViewerImagePageContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70753EA2542A99800972D44 /* NCViewerImagePageContainer.swift */; };
 		F70753F12542A9A200972D44 /* NCViewerImageZoom.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70753F02542A9A200972D44 /* NCViewerImageZoom.swift */; };
 		F70753F72542A9C000972D44 /* NCViewerImage.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F70753F62542A9C000972D44 /* NCViewerImage.storyboard */; };
@@ -380,9 +377,6 @@
 		F7063DEC2199E55F003F38DA /* SVGKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SVGKit.framework; path = Carthage/Build/iOS/SVGKit.framework; sourceTree = "<group>"; };
 		F7063DEE2199E568003F38DA /* CocoaLumberjack.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CocoaLumberjack.framework; path = Carthage/Build/iOS/CocoaLumberjack.framework; sourceTree = "<group>"; };
 		F7063DF02199E56E003F38DA /* CocoaLumberjackSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CocoaLumberjackSwift.framework; path = Carthage/Build/iOS/CocoaLumberjackSwift.framework; sourceTree = "<group>"; };
-		F70753E02542A99100972D44 /* NCZoomTransitionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCZoomTransitionController.swift; sourceTree = "<group>"; };
-		F70753E12542A99100972D44 /* NCZoomDismissalInteractionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCZoomDismissalInteractionController.swift; sourceTree = "<group>"; };
-		F70753E22542A99100972D44 /* NCZoomAnimator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCZoomAnimator.swift; sourceTree = "<group>"; };
 		F70753EA2542A99800972D44 /* NCViewerImagePageContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCViewerImagePageContainer.swift; sourceTree = "<group>"; };
 		F70753F02542A9A200972D44 /* NCViewerImageZoom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCViewerImageZoom.swift; sourceTree = "<group>"; };
 		F70753F62542A9C000972D44 /* NCViewerImage.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCViewerImage.storyboard; sourceTree = "<group>"; };
@@ -835,16 +829,6 @@
 			path = Imagemeter;
 			sourceTree = "<group>";
 		};
-		F70753DF2542A99100972D44 /* Animation */ = {
-			isa = PBXGroup;
-			children = (
-				F70753E02542A99100972D44 /* NCZoomTransitionController.swift */,
-				F70753E12542A99100972D44 /* NCZoomDismissalInteractionController.swift */,
-				F70753E22542A99100972D44 /* NCZoomAnimator.swift */,
-			);
-			path = Animation;
-			sourceTree = "<group>";
-		};
 		F70784811A2C8A0D00AC9FFF /* UploadFromOtherUpp */ = {
 			isa = PBXGroup;
 			children = (
@@ -1128,7 +1112,6 @@
 				F70753F62542A9C000972D44 /* NCViewerImage.storyboard */,
 				F70753EA2542A99800972D44 /* NCViewerImagePageContainer.swift */,
 				F70753F02542A9A200972D44 /* NCViewerImageZoom.swift */,
-				F70753DF2542A99100972D44 /* Animation */,
 			);
 			path = NCViewerImage;
 			sourceTree = "<group>";
@@ -2057,7 +2040,6 @@
 				F77B0DF21D118A16002130FE /* CCUploadFromOtherUpp.m in Sources */,
 				F77444F522281649000D5EB0 /* NCGridMediaCell.swift in Sources */,
 				F7AE00F8230E81CB007ACF8A /* NCBrowserWeb.swift in Sources */,
-				F70753E52542A99100972D44 /* NCZoomAnimator.swift in Sources */,
 				F70A58BE24D0349500DED00D /* NCCapabilitiesViewController.swift in Sources */,
 				370D26AF248A3D7A00121797 /* NCImageCellProtocol.swift in Sources */,
 				F77B0DF51D118A16002130FE /* CCUtility.m in Sources */,
@@ -2100,7 +2082,6 @@
 				F700510522DF6A89003A3356 /* NCShare.swift in Sources */,
 				F7CA1ED120E7E3FE002CC65E /* PKCircleProgressView.m in Sources */,
 				F72D1007210B6882009C96B7 /* NCPushNotificationEncryption.m in Sources */,
-				F70753E42542A99100972D44 /* NCZoomDismissalInteractionController.swift in Sources */,
 				F7CA1ED420E7E3FE002CC65E /* PKPendingView.m in Sources */,
 				F769454222E9F0EE000A798A /* NCShareLinkMenuView.swift in Sources */,
 				F785EE9D246196DF00B3F945 /* NCNetworkingE2EE.swift in Sources */,
@@ -2150,7 +2131,6 @@
 				F70006FC2416500B00F214A5 /* NCViewerVideo.swift in Sources */,
 				F710D1FF24057E5E00A6033D /* NCActionSheetHeaderView.swift in Sources */,
 				F7020FCE2233D7F700B7297D /* NCCreateFormUploadVoiceNote.swift in Sources */,
-				F70753E32542A99100972D44 /* NCZoomTransitionController.swift in Sources */,
 				F7F4B1D823C74B3E00D82A6E /* NCRichWorkspace.swift in Sources */,
 				F726EEEC1FED1C820030B9C8 /* NCEndToEndInitialize.swift in Sources */,
 				F79A65C62191D95E00FF6DCC /* NCSelect.swift in Sources */,

+ 3 - 96
iOSClient/Main/Colleaction Common/NCCollectionViewCommon.swift

@@ -69,8 +69,7 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
     internal var isReloadDataSourceNetworkInProgress: Bool = false
     
     var selectedIndexPath: IndexPath!
-    var currentLeftSafeAreaInset: CGFloat = 0.0
-    var currentRightSafeAreaInset: CGFloat = 0.0
+   
     
     // DECLARE
     internal var layoutKey = ""
@@ -183,7 +182,7 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
         }
         
         navigationController?.navigationBar.prefersLargeTitles = true
-        navigationController?.setNavigationBarHidden(false, animated: false)
+        navigationController?.setNavigationBarHidden(false, animated: true)
         setNavigationItem()
         
         reloadDataSource()
@@ -194,12 +193,6 @@ class NCCollectionViewCommon: UIViewController, UIGestureRecognizerDelegate, UIS
         
         reloadDataSourceNetwork()
     }
-    
-    override func viewSafeAreaInsetsDidChange() {
-    
-        currentLeftSafeAreaInset = view.safeAreaInsets.left
-        currentRightSafeAreaInset = view.safeAreaInsets.right
-    }
         
     func presentationControllerDidDismiss( _ presentationController: UIPresentationController) {
         let viewController = presentationController.presentedViewController
@@ -1404,7 +1397,7 @@ extension NCCollectionViewCommon: UICollectionViewDataSource {
                         }
                     }
                 }
-               
+                
                 cell.labelInfo.text = CCUtility.dateDiff(metadata.date as Date) + " · " + CCUtility.transformedSize(metadata.size)
                                 
                 // image local
@@ -1656,89 +1649,3 @@ extension NCCollectionViewCommon: UICollectionViewDelegateFlowLayout {
     }
 }
 
-extension NCCollectionViewCommon: NCViewerImagePageContainerDelegate {
- 
-    func containerViewController(_ containerViewController: NCViewerImagePageContainer, indexDidUpdate currentIndex: Int) {
-        self.selectedIndexPath = IndexPath(row: currentIndex, section: 0)
-        self.collectionView.scrollToItem(at: self.selectedIndexPath, at: .centeredVertically, animated: false)
-    }
-}
-
-extension NCCollectionViewCommon: ZoomAnimatorDelegate {
-    
-    func transitionWillStartWith(zoomAnimator: ZoomAnimator) {
-        
-    }
-    
-    func transitionDidEndWith(zoomAnimator: ZoomAnimator) {
-        
-        var cellFrame: CGRect = CGRect.init()
-        let cell = self.collectionView.cellForItem(at: self.selectedIndexPath)
-
-        if cell is NCListCell {
-            cellFrame = self.collectionView.convert((cell as! NCListCell).frame, to: self.view)
-        } else if cell is NCGridCell {
-            cellFrame = self.collectionView.convert((cell as! NCGridCell).frame, to: self.view)
-        }
-        
-        if cellFrame.minY < self.collectionView.contentInset.top {
-            self.collectionView.scrollToItem(at: self.selectedIndexPath, at: .top, animated: false)
-        } else if cellFrame.maxY > self.view.frame.height - self.collectionView.contentInset.bottom {
-            self.collectionView.scrollToItem(at: self.selectedIndexPath, at: .bottom, animated: false)
-        }
-    }
-    
-    func referenceImageView(for zoomAnimator: ZoomAnimator) -> UIImageView? {
-        
-        let cell = collectionView.cellForItem(at: selectedIndexPath)
-        if cell is NCListCell {
-            return (cell as! NCListCell).imageItem
-        } else if cell is NCGridCell {
-            return (cell as! NCGridCell).imageItem
-        }
-        
-        return nil
-    }
-    
-    func referenceImageViewFrameInTransitioningView(for zoomAnimator: ZoomAnimator) -> CGRect? {
-        
-        var unconvertedFrame: CGRect = CGRect()
-        
-        view.layoutIfNeeded()
-        collectionView.layoutIfNeeded()
-        
-        let visibleCells = collectionView.indexPathsForVisibleItems
-        if !visibleCells.contains(selectedIndexPath) {
-            
-            collectionView.scrollToItem(at: selectedIndexPath, at: .centeredVertically, animated: false)
-            collectionView.reloadItems(at: collectionView.indexPathsForVisibleItems)
-            collectionView.layoutIfNeeded()
-            
-            let cell = collectionView.cellForItem(at: selectedIndexPath)
-            if cell is NCListCell {
-                unconvertedFrame = (cell as! NCListCell).frame
-            } else if cell is NCGridCell {
-                unconvertedFrame = (cell as! NCGridCell).frame
-            }
-            
-        } else {
-            
-            let cell = collectionView.cellForItem(at: self.selectedIndexPath)
-            if cell is NCListCell {
-                unconvertedFrame = (cell as! NCListCell).frame
-            } else if cell is NCGridCell {
-                unconvertedFrame = (cell as! NCGridCell).frame
-            }
-        }
-        
-        let cellFrame = self.collectionView.convert(unconvertedFrame, to: view)
-        
-        if cellFrame.minY < collectionView.contentInset.top {
-            return CGRect(x: cellFrame.minX, y: collectionView.contentInset.top, width: cellFrame.width, height: cellFrame.height - (collectionView.contentInset.top - cellFrame.minY))
-        }
-        
-        return cellFrame
-    }
-    
-}
-

+ 8 - 19
iOSClient/Viewer/NCViewer.swift

@@ -59,27 +59,16 @@ class NCViewer: NSObject {
             if let navigationController = getPushNavigationController(viewController: viewController, serverUrl: metadata.serverUrl) {
                 
                 let viewerImagePageContainer:NCViewerImagePageContainer = UIStoryboard(name: "NCViewerImage", bundle: nil).instantiateInitialViewController() as! NCViewerImagePageContainer
-            
-                navigationController.delegate = viewerImagePageContainer.transitionController
-                viewerImagePageContainer.transitionController.toDelegate = viewerImagePageContainer
-                if viewController is NCFiles {
-                    let viewController: NCFiles = viewController as! NCFiles
-                    viewerImagePageContainer.transitionController.fromDelegate = viewController
-                    viewerImagePageContainer.transitionController.toDelegate = viewerImagePageContainer
-                    viewerImagePageContainer.delegate = viewController
-                    
-                    var index = 0
-                    for medatasImage in metadatas {
-                        if medatasImage.ocId == metadata.ocId {
-                            viewerImagePageContainer.currentIndex = index
-                            break
-                        }
-                        index += 1
+                var index = 0
+                for medatasImage in metadatas {
+                    if medatasImage.ocId == metadata.ocId {
+                        viewerImagePageContainer.currentIndex = index
+                        break
                     }
-                    viewerImagePageContainer.metadatas = metadatas
-                    
-                    navigationController.pushViewController(viewerImagePageContainer, animated: true)
+                    index += 1
                 }
+                viewerImagePageContainer.metadatas = metadatas
+                navigationController.pushViewController(viewerImagePageContainer, animated: true)
             }
     
             return

+ 0 - 166
iOSClient/Viewer/NCViewerImage/Animation/NCZoomAnimator.swift

@@ -1,166 +0,0 @@
-
-import UIKit
-
-protocol ZoomAnimatorDelegate: class {
-    func transitionWillStartWith(zoomAnimator: ZoomAnimator)
-    func transitionDidEndWith(zoomAnimator: ZoomAnimator)
-    func referenceImageView(for zoomAnimator: ZoomAnimator) -> UIImageView?
-    func referenceImageViewFrameInTransitioningView(for zoomAnimator: ZoomAnimator) -> CGRect?
-}
-
-class ZoomAnimator: NSObject {
-    
-    weak var fromDelegate: ZoomAnimatorDelegate?
-    weak var toDelegate: ZoomAnimatorDelegate?
-
-    var transitionImageView: UIImageView?
-    var isPresenting: Bool = true
-    
-    fileprivate func animateZoomInTransition(using transitionContext: UIViewControllerContextTransitioning) {
-        
-        let containerView = transitionContext.containerView
-        
-        guard let toVC = transitionContext.viewController(forKey: .to),
-            let fromVC = transitionContext.viewController(forKey: .from),
-            let fromReferenceImageView = self.fromDelegate?.referenceImageView(for: self),
-            let toReferenceImageView = self.toDelegate?.referenceImageView(for: self),
-            let fromReferenceImageViewFrame = self.fromDelegate?.referenceImageViewFrameInTransitioningView(for: self)
-            else {
-                return
-        }
-        
-        self.fromDelegate?.transitionWillStartWith(zoomAnimator: self)
-        self.toDelegate?.transitionWillStartWith(zoomAnimator: self)
-        
-        toVC.view.alpha = 0
-        toReferenceImageView.isHidden = true
-        containerView.addSubview(toVC.view)
-        
-        let referenceImage = fromReferenceImageView.image!
-        
-        if self.transitionImageView == nil {
-            let transitionImageView = UIImageView(image: referenceImage)
-            transitionImageView.contentMode = .scaleAspectFill
-            transitionImageView.clipsToBounds = true
-            transitionImageView.frame = fromReferenceImageViewFrame
-            self.transitionImageView = transitionImageView
-            containerView.addSubview(transitionImageView)
-        }
-        
-        fromReferenceImageView.isHidden = true
-        
-        let finalTransitionSize = calculateZoomInImageFrame(image: referenceImage, forView: toVC.view)
-        
-        UIView.animate(withDuration: transitionDuration(using: transitionContext),
-                       delay: 0,
-                       usingSpringWithDamping: 0.8,
-                       initialSpringVelocity: 0,
-                       options: [UIView.AnimationOptions.transitionCrossDissolve],
-                       animations: {
-                        self.transitionImageView?.frame = finalTransitionSize
-                        toVC.view.alpha = 1.0
-                        fromVC.tabBarController?.tabBar.alpha = 0
-        },
-                       completion: { completed in
-                    
-                        self.transitionImageView?.removeFromSuperview()
-                        toReferenceImageView.isHidden = false
-                        fromReferenceImageView.isHidden = false
-                        
-                        self.transitionImageView = nil
-                        
-                        transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
-                        self.toDelegate?.transitionDidEndWith(zoomAnimator: self)
-                        self.fromDelegate?.transitionDidEndWith(zoomAnimator: self)
-        })
-    }
-    
-    fileprivate func animateZoomOutTransition(using transitionContext: UIViewControllerContextTransitioning) {
-        let containerView = transitionContext.containerView
-        
-        guard let toVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to),
-            let fromVC = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from),
-            let fromReferenceImageView = self.fromDelegate?.referenceImageView(for: self),
-            let toReferenceImageView = self.toDelegate?.referenceImageView(for: self),
-            let fromReferenceImageViewFrame = self.fromDelegate?.referenceImageViewFrameInTransitioningView(for: self),
-            let toReferenceImageViewFrame = self.toDelegate?.referenceImageViewFrameInTransitioningView(for: self)
-            else {
-                return
-        }
-        
-        self.fromDelegate?.transitionWillStartWith(zoomAnimator: self)
-        self.toDelegate?.transitionWillStartWith(zoomAnimator: self)
-        
-        toReferenceImageView.isHidden = true
-        
-        let referenceImage = fromReferenceImageView.image!
-        
-        if self.transitionImageView == nil {
-            let transitionImageView = UIImageView(image: referenceImage)
-            transitionImageView.contentMode = .scaleAspectFill
-            transitionImageView.clipsToBounds = true
-            transitionImageView.frame = fromReferenceImageViewFrame
-            self.transitionImageView = transitionImageView
-            containerView.addSubview(transitionImageView)
-        }
-        
-        containerView.insertSubview(toVC.view, belowSubview: fromVC.view)
-        fromReferenceImageView.isHidden = true
-        
-        let finalTransitionSize = toReferenceImageViewFrame
-        
-        UIView.animate(withDuration: transitionDuration(using: transitionContext),
-                       delay: 0,
-                       options: [],
-                       animations: {
-                        fromVC.view.alpha = 0
-                        self.transitionImageView?.frame = finalTransitionSize
-                        toVC.tabBarController?.tabBar.alpha = 1
-        }, completion: { completed in
-            
-            self.transitionImageView?.removeFromSuperview()
-            toReferenceImageView.isHidden = false
-            fromReferenceImageView.isHidden = false
-            
-            transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
-            self.toDelegate?.transitionDidEndWith(zoomAnimator: self)
-            self.fromDelegate?.transitionDidEndWith(zoomAnimator: self)
-
-        })
-    }
-    
-    private func calculateZoomInImageFrame(image: UIImage, forView view: UIView) -> CGRect {
-        
-        let viewRatio = view.frame.size.width / view.frame.size.height
-        let imageRatio = image.size.width / image.size.height
-        let touchesSides = (imageRatio > viewRatio)
-        
-        if touchesSides {
-            let height = view.frame.width / imageRatio
-            let yPoint = view.frame.minY + (view.frame.height - height) / 2
-            return CGRect(x: 0, y: yPoint, width: view.frame.width, height: height)
-        } else {
-            let width = view.frame.height * imageRatio
-            let xPoint = view.frame.minX + (view.frame.width - width) / 2
-            return CGRect(x: xPoint, y: 0, width: width, height: view.frame.height)
-        }
-    }
-}
-
-extension ZoomAnimator: UIViewControllerAnimatedTransitioning {
-    func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
-        if self.isPresenting {
-            return 0.5
-        } else {
-            return 0.25
-        }
-    }
-    
-    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
-        if self.isPresenting {
-            animateZoomInTransition(using: transitionContext)
-        } else {
-            animateZoomOutTransition(using: transitionContext)
-        }
-    }
-}

+ 0 - 164
iOSClient/Viewer/NCViewerImage/Animation/NCZoomDismissalInteractionController.swift

@@ -1,164 +0,0 @@
-
-
-import UIKit
-
-class ZoomDismissalInteractionController: NSObject {
-    
-    var transitionContext: UIViewControllerContextTransitioning?
-    var animator: UIViewControllerAnimatedTransitioning?
-    
-    var fromReferenceImageViewFrame: CGRect?
-    var toReferenceImageViewFrame: CGRect?
-    
-    func didPanWith(gestureRecognizer: UIPanGestureRecognizer) {
-        
-        guard let transitionContext = self.transitionContext,
-            let animator = self.animator as? ZoomAnimator,
-            let transitionImageView = animator.transitionImageView,
-            let fromVC = transitionContext.viewController(forKey: .from),
-            let toVC = transitionContext.viewController(forKey: .to),
-            let fromReferenceImageView = animator.fromDelegate?.referenceImageView(for: animator),
-            let toReferenceImageView = animator.toDelegate?.referenceImageView(for: animator),
-            let fromReferenceImageViewFrame = self.fromReferenceImageViewFrame,
-            let toReferenceImageViewFrame = self.toReferenceImageViewFrame else {
-                return
-        }
-        
-        
-        fromReferenceImageView.isHidden = true
-        
-        let anchorPoint = CGPoint(x: fromReferenceImageViewFrame.midX, y: fromReferenceImageViewFrame.midY)
-        let translatedPoint = gestureRecognizer.translation(in: fromReferenceImageView)
-        let verticalDelta : CGFloat = translatedPoint.y < 0 ? 0 : translatedPoint.y
-
-        let backgroundAlpha = backgroundAlphaFor(view: fromVC.view, withPanningVerticalDelta: verticalDelta)
-        let scale = scaleFor(view: fromVC.view, withPanningVerticalDelta: verticalDelta)
-        
-        fromVC.view.alpha = backgroundAlpha
-        
-        transitionImageView.transform = CGAffineTransform(scaleX: scale, y: scale)
-        let newCenter = CGPoint(x: anchorPoint.x + translatedPoint.x, y: anchorPoint.y + translatedPoint.y - transitionImageView.frame.height * (1 - scale) / 2.0)
-        transitionImageView.center = newCenter
-        
-        toReferenceImageView.isHidden = true
-        
-        transitionContext.updateInteractiveTransition(1 - scale)
-        
-        toVC.tabBarController?.tabBar.alpha = 1 - backgroundAlpha
-        
-        if gestureRecognizer.state == .ended {
-            
-            let velocity = gestureRecognizer.velocity(in: fromVC.view)
-            if velocity.y < 0 || newCenter.y < anchorPoint.y {
-                
-                //cancel
-                UIView.animate(
-                    withDuration: 0.5,
-                    delay: 0,
-                    usingSpringWithDamping: 0.9,
-                    initialSpringVelocity: 0,
-                    options: [],
-                    animations: {
-                        transitionImageView.frame = fromReferenceImageViewFrame
-                        fromVC.view.alpha = 1.0
-                        toVC.tabBarController?.tabBar.alpha = 0
-                },
-                    completion: { completed in
-                        
-                        toReferenceImageView.isHidden = false
-                        fromReferenceImageView.isHidden = false
-                        transitionImageView.removeFromSuperview()
-                        animator.transitionImageView = nil
-                        transitionContext.cancelInteractiveTransition()
-                        transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
-                        animator.toDelegate?.transitionDidEndWith(zoomAnimator: animator)
-                        animator.fromDelegate?.transitionDidEndWith(zoomAnimator: animator)
-                        self.transitionContext = nil
-                })
-                return
-            }
-            
-            //start animation
-            let finalTransitionSize = toReferenceImageViewFrame
-            
-            UIView.animate(withDuration: 0.25,
-                           delay: 0,
-                           options: [],
-                           animations: {
-                            fromVC.view.alpha = 0
-                            transitionImageView.frame = finalTransitionSize
-                            toVC.tabBarController?.tabBar.alpha = 1
-                            
-            }, completion: { completed in
-                
-                transitionImageView.removeFromSuperview()
-                toReferenceImageView.isHidden = false
-                fromReferenceImageView.isHidden = false
-                
-                self.transitionContext?.finishInteractiveTransition()
-                transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
-                animator.toDelegate?.transitionDidEndWith(zoomAnimator: animator)
-                animator.fromDelegate?.transitionDidEndWith(zoomAnimator: animator)
-                self.transitionContext = nil
-            })
-        }
-    }
-    
-    func backgroundAlphaFor(view: UIView, withPanningVerticalDelta verticalDelta: CGFloat) -> CGFloat {
-        let startingAlpha:CGFloat = 1.0
-        let finalAlpha: CGFloat = 0.0
-        let totalAvailableAlpha = startingAlpha - finalAlpha
-        
-        let maximumDelta = view.bounds.height / 4.0
-        let deltaAsPercentageOfMaximun = min(abs(verticalDelta) / maximumDelta, 1.0)
-        
-        return startingAlpha - (deltaAsPercentageOfMaximun * totalAvailableAlpha)
-    }
-    
-    func scaleFor(view: UIView, withPanningVerticalDelta verticalDelta: CGFloat) -> CGFloat {
-        let startingScale:CGFloat = 1.0
-        let finalScale: CGFloat = 0.5
-        let totalAvailableScale = startingScale - finalScale
-        
-        let maximumDelta = view.bounds.height / 2.0
-        let deltaAsPercentageOfMaximun = min(abs(verticalDelta) / maximumDelta, 1.0)
-        
-        return startingScale - (deltaAsPercentageOfMaximun * totalAvailableScale)
-    }
-}
-
-extension ZoomDismissalInteractionController: UIViewControllerInteractiveTransitioning {
-    func startInteractiveTransition(_ transitionContext: UIViewControllerContextTransitioning) {
-        self.transitionContext = transitionContext
-        
-        let containerView = transitionContext.containerView
-        
-        guard let animator = self.animator as? ZoomAnimator,
-            let fromVC = transitionContext.viewController(forKey: .from),
-            let toVC = transitionContext.viewController(forKey: .to),
-            let fromReferenceImageViewFrame = animator.fromDelegate?.referenceImageViewFrameInTransitioningView(for: animator),
-            let toReferenceImageViewFrame = animator.toDelegate?.referenceImageViewFrameInTransitioningView(for: animator),
-            let fromReferenceImageView = animator.fromDelegate?.referenceImageView(for: animator)
-            else {
-                return
-        }
-        
-        animator.fromDelegate?.transitionWillStartWith(zoomAnimator: animator)
-        animator.toDelegate?.transitionWillStartWith(zoomAnimator: animator)
-        
-        self.fromReferenceImageViewFrame = fromReferenceImageViewFrame
-        self.toReferenceImageViewFrame = toReferenceImageViewFrame
-        
-        let referenceImage = fromReferenceImageView.image!
-        
-        containerView.insertSubview(toVC.view, belowSubview: fromVC.view)
-        if animator.transitionImageView == nil {
-            let transitionImageView = UIImageView(image: referenceImage)
-            transitionImageView.contentMode = .scaleAspectFill
-            transitionImageView.clipsToBounds = true
-            transitionImageView.frame = fromReferenceImageViewFrame
-            animator.transitionImageView = transitionImageView
-            containerView.addSubview(transitionImageView)
-        }
-    }
-}

+ 0 - 79
iOSClient/Viewer/NCViewerImage/Animation/NCZoomTransitionController.swift

@@ -1,79 +0,0 @@
-
-
-import UIKit
-
-class ZoomTransitionController: NSObject {
-    
-    let animator: ZoomAnimator
-    let interactionController: ZoomDismissalInteractionController
-    var isInteractive: Bool = false
-
-    weak var fromDelegate: ZoomAnimatorDelegate?
-    weak var toDelegate: ZoomAnimatorDelegate?
-    
-    override init() {
-        animator = ZoomAnimator()
-        interactionController = ZoomDismissalInteractionController()
-        super.init()
-    }
-    
-    func didPanWith(gestureRecognizer: UIPanGestureRecognizer) {
-        self.interactionController.didPanWith(gestureRecognizer: gestureRecognizer)
-    }
-}
-
-extension ZoomTransitionController: UIViewControllerTransitioningDelegate {
-    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
-        self.animator.isPresenting = true
-        self.animator.fromDelegate = fromDelegate
-        self.animator.toDelegate = toDelegate
-        return self.animator
-    }
-    
-    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
-        self.animator.isPresenting = false
-        let tmp = self.fromDelegate
-        self.animator.fromDelegate = self.toDelegate
-        self.animator.toDelegate = tmp
-        return self.animator
-    }
-
-    func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
-        if !self.isInteractive {
-            return nil
-        }
-        
-        self.interactionController.animator = animator
-        return self.interactionController
-    }
-
-}
-
-extension ZoomTransitionController: UINavigationControllerDelegate {
-    func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
-        
-        if operation == .push {
-            self.animator.isPresenting = true
-            self.animator.fromDelegate = fromDelegate
-            self.animator.toDelegate = toDelegate
-        } else {
-            self.animator.isPresenting = false
-            let tmp = self.fromDelegate
-            self.animator.fromDelegate = self.toDelegate
-            self.animator.toDelegate = tmp
-        }
-        
-        return self.animator
-    }
-    
-    func navigationController(_ navigationController: UINavigationController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
-        
-        if !self.isInteractive {
-            return nil
-        }
-        
-        self.interactionController.animator = animator
-        return self.interactionController
-    }
-
-}

+ 13 - 38
iOSClient/Viewer/NCViewerImage/NCViewerImagePageContainer.swift

@@ -2,19 +2,13 @@
 
 import UIKit
 
-protocol NCViewerImagePageContainerDelegate: class {
-    func containerViewController(_ containerViewController: NCViewerImagePageContainer, indexDidUpdate currentIndex: Int)
-}
-
 class NCViewerImagePageContainer: UIViewController, UIGestureRecognizerDelegate {
 
     enum ScreenMode {
         case full, normal
     }
     var currentMode: ScreenMode = .normal
-    
-    weak var delegate: NCViewerImagePageContainerDelegate?
-    
+        
     var pageViewController: UIPageViewController {
         return self.children[0] as! UIPageViewController
     }
@@ -26,12 +20,12 @@ class NCViewerImagePageContainer: UIViewController, UIGestureRecognizerDelegate
     var metadatas: [tableMetadata] = []
     var currentIndex = 0
     var nextIndex: Int?
+    var startPanLocation = CGPoint.zero
+    let panDistanceForPopViewController: CGFloat = 50
     
     var panGestureRecognizer: UIPanGestureRecognizer!
     var singleTapGestureRecognizer: UITapGestureRecognizer!
-    
-    var transitionController = ZoomTransitionController()
-    
+        
     override func viewDidLoad() {
         super.viewDidLoad()
         
@@ -86,20 +80,19 @@ class NCViewerImagePageContainer: UIViewController, UIGestureRecognizerDelegate
     }
 
     @objc func didPanWith(gestureRecognizer: UIPanGestureRecognizer) {
+        let currentLocation = gestureRecognizer.location(in: self.view)
+
         switch gestureRecognizer.state {
         case .began:
-            currentViewController.scrollView.isScrollEnabled = false
-            transitionController.isInteractive = true
-            navigationController?.popViewController(animated: true)
+            startPanLocation = currentLocation
+            currentViewController.scrollView.isScrollEnabled = true
         case .ended:
-            if transitionController.isInteractive {
-                currentViewController.scrollView.isScrollEnabled = true
-                transitionController.isInteractive = false
-                transitionController.didPanWith(gestureRecognizer: gestureRecognizer)
-            }
+            currentViewController.scrollView.isScrollEnabled = false
         default:
-            if transitionController.isInteractive {
-                transitionController.didPanWith(gestureRecognizer: gestureRecognizer)
+            let dx = currentLocation.x - startPanLocation.x
+            let dy = currentLocation.y - startPanLocation.y
+            if sqrt(dx*dx + dy*dy) >= panDistanceForPopViewController {
+                self.navigationController?.popViewController(animated: true)
             }
         }
     }
@@ -112,7 +105,6 @@ class NCViewerImagePageContainer: UIViewController, UIGestureRecognizerDelegate
             changeScreenMode(to: .full)
             self.currentMode = .full
         }
-
     }
     
     func changeScreenMode(to: ScreenMode) {
@@ -197,7 +189,6 @@ extension NCViewerImagePageContainer: UIPageViewControllerDelegate, UIPageViewCo
             }
 
             currentIndex = nextIndex!
-            delegate?.containerViewController(self, indexDidUpdate: currentIndex)
         }
         
         self.nextIndex = nil
@@ -215,19 +206,3 @@ extension NCViewerImagePageContainer: NCViewerImageZoomDelegate {
     }
 }
 
-extension NCViewerImagePageContainer: ZoomAnimatorDelegate {
-    
-    func transitionWillStartWith(zoomAnimator: ZoomAnimator) {
-    }
-    
-    func transitionDidEndWith(zoomAnimator: ZoomAnimator) {
-    }
-    
-    func referenceImageView(for zoomAnimator: ZoomAnimator) -> UIImageView? {
-        return self.currentViewController.imageView
-    }
-    
-    func referenceImageViewFrameInTransitioningView(for zoomAnimator: ZoomAnimator) -> CGRect? {        
-        return currentViewController.scrollView.convert(currentViewController.imageView.frame, to: currentViewController.view)
-    }
-}

+ 0 - 22
iOSClient/Viewer/NCViewerImage/NCViewerImageZoom.swift

@@ -53,28 +53,6 @@ class NCViewerImageZoom: UIViewController {
         updateConstraintsForSize(view.bounds.size)
     }
     
-    override func viewSafeAreaInsetsDidChange() {
-        
-        //When this view's safeAreaInsets change, propagate this information
-        //to the previous ViewController so the collectionView contentInsets
-        //can be updated accordingly. This is necessary in order to properly
-        //calculate the frame position for the dismiss (swipe down) animation
-
-            
-            //Get the parent view controller (ViewController) from the navigation controller
-            guard let parentVC = self.navigationController?.viewControllers.first as? NCFiles else {
-                return
-            }
-            
-            //Update the ViewController's left and right local safeAreaInset variables
-            //with the safeAreaInsets for this current view. These will be used to
-            //update the contentInsets of the collectionView inside ViewController
-            parentVC.currentLeftSafeAreaInset = self.view.safeAreaInsets.left
-            parentVC.currentRightSafeAreaInset = self.view.safeAreaInsets.right
-            
-        
-    }
-    
     override func didReceiveMemoryWarning() {
         super.didReceiveMemoryWarning()
     }