marinofaggiana 3 ani în urmă
părinte
comite
8182fdb4b4

+ 2 - 2
iOSClient/Viewer/NCViewerImage/NCViewerImage.storyboard

@@ -80,7 +80,7 @@
                             <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" maximumZoomScale="4" translatesAutoresizingMaskIntoConstraints="NO" id="CdQ-LC-Trx">
                                 <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
                                 <subviews>
-                                    <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="kPV-JM-UnM">
+                                    <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="kPV-JM-UnM" customClass="imageVideoContainerView" customModule="Nextcloud" customModuleProvider="target">
                                         <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
                                     </imageView>
                                     <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="2AU-85-K8y">
@@ -371,7 +371,7 @@
                     <connections>
                         <outlet property="detailView" destination="P8R-4f-zAl" id="xFW-qq-Cdi"/>
                         <outlet property="detailViewConstraint" destination="bor-cg-Alz" id="Hwu-z8-2SS"/>
-                        <outlet property="imageView" destination="kPV-JM-UnM" id="TEv-Tc-8pu"/>
+                        <outlet property="imageVideoContainer" destination="kPV-JM-UnM" id="2pA-VW-FuK"/>
                         <outlet property="imageViewBottomConstraint" destination="vEd-X2-yGs" id="wp3-67-aZ2"/>
                         <outlet property="imageViewTopConstraint" destination="tdo-XY-uqv" id="AM2-tz-fSt"/>
                         <outlet property="scrollView" destination="CdQ-LC-Trx" id="3np-FR-s39"/>

+ 2 - 2
iOSClient/Viewer/NCViewerImage/NCViewerImage.swift

@@ -266,7 +266,7 @@ class NCViewerImage: UIViewController {
                 if CCUtility.fileProviderStorageExists(metadata.ocId, fileNameView: metadata.fileNameView) {
                     
                     AudioServicesPlaySystemSound(1519) // peek feedback
-                    NCViewerVideo.shared.initVideoPlayer(imageView: self.currentViewerImageZoom?.imageView, viewerVideoToolBar: nil, metadata: metadata)
+                    NCViewerVideo.shared.initVideoPlayer(imageVideoContainer: self.currentViewerImageZoom?.imageVideoContainer, viewerVideoToolBar: nil, metadata: metadata)
                     NCViewerVideo.shared.videoPlay()
                     
                 } else {
@@ -292,7 +292,7 @@ class NCViewerImage: UIViewController {
                             
                             if gestureRecognizer.state == .changed || gestureRecognizer.state == .began {
                                 AudioServicesPlaySystemSound(1519) // peek feedback
-                                NCViewerVideo.shared.initVideoPlayer(imageView: self.currentViewerImageZoom?.imageView, viewerVideoToolBar: nil, metadata: metadata)
+                                NCViewerVideo.shared.initVideoPlayer(imageVideoContainer: self.currentViewerImageZoom?.imageVideoContainer, viewerVideoToolBar: nil, metadata: metadata)
                                 NCViewerVideo.shared.videoPlay()
                             }
                         }

+ 27 - 17
iOSClient/Viewer/NCViewerImage/NCViewerImageZoom.swift

@@ -36,7 +36,7 @@ class NCViewerImageZoom: UIViewController {
     @IBOutlet weak var imageViewBottomConstraint: NSLayoutConstraint!
     
     @IBOutlet weak var scrollView: UIScrollView!
-    @IBOutlet weak var imageView: UIImageView!
+    @IBOutlet weak var imageVideoContainer: imageVideoContainerView!
     @IBOutlet weak var statusViewImage: UIImageView!
     @IBOutlet weak var statusLabel: UILabel!
     @IBOutlet weak var detailView: NCViewerImageDetailView!
@@ -90,7 +90,7 @@ class NCViewerImageZoom: UIViewController {
                 image = UIImage.init(named: "noPreview")!.image(color: .gray, size: view.frame.width)
             }
         }
-        imageView.image = image
+        imageVideoContainer.image = image
         
         if NCManageDatabase.shared.getMetadataLivePhoto(metadata: metadata) != nil {
             statusViewImage.image = NCUtility.shared.loadImage(named: "livephoto", color: .gray)
@@ -117,7 +117,7 @@ class NCViewerImageZoom: UIViewController {
         
         if metadata.classFile == NCCommunicationCommon.typeClassFile.video.rawValue || metadata.classFile == NCCommunicationCommon.typeClassFile.audio.rawValue {
             DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
-                NCViewerVideo.shared.initVideoPlayer(imageView: self.imageView, viewerVideoToolBar: self.videoToolBar, metadata: self.metadata)
+                NCViewerVideo.shared.initVideoPlayer(imageVideoContainer: self.imageVideoContainer, viewerVideoToolBar: self.videoToolBar, metadata: self.metadata)
             }
         }
     }
@@ -131,7 +131,7 @@ class NCViewerImageZoom: UIViewController {
             self.view.layoutIfNeeded()
             UIView.animate(withDuration: context.transitionDuration) {
                 // resize frame video
-                NCViewerVideo.shared.videoLayer?.frame = self.imageView.layer.bounds
+                //NCViewerVideo.shared.videoLayer?.frame = self.imageView.layer.bounds
                 // resize detail
                 if self.detailView.isShow() {
                     self.openDetail()
@@ -141,7 +141,7 @@ class NCViewerImageZoom: UIViewController {
     }
     
     func reload(image: UIImage, metadata: tableMetadata) {
-        imageView.image = image
+        imageVideoContainer.image = image
         self.metadata = metadata
     }
         
@@ -156,7 +156,7 @@ class NCViewerImageZoom: UIViewController {
             return
         }
         
-        let pointInView = gestureRecognizer.location(in: self.imageView)
+        let pointInView = gestureRecognizer.location(in: self.imageVideoContainer)
         var newZoomScale = self.scrollView.maximumZoomScale
             
         if self.scrollView.zoomScale >= newZoomScale || abs(self.scrollView.zoomScale - newZoomScale) <= 0.01 {
@@ -231,9 +231,9 @@ extension NCViewerImageZoom {
         
         self.detailView.show(textColor: self.viewerImage?.textColor)
         
-        if let image = imageView.image {
-            let ratioW = imageView.frame.width / image.size.width
-            let ratioH = imageView.frame.height / image.size.height
+        if let image = imageVideoContainer.image {
+            let ratioW = imageVideoContainer.frame.width / image.size.width
+            let ratioH = imageVideoContainer.frame.height / image.size.height
             let ratio = ratioW < ratioH ? ratioW : ratioH
             let imageHeight = image.size.height * ratio
             imageViewConstraint = self.detailView.frame.height - ((self.view.frame.height - imageHeight) / 2) + self.view.safeAreaInsets.bottom
@@ -277,24 +277,24 @@ extension NCViewerImageZoom {
 extension NCViewerImageZoom: UIScrollViewDelegate {
     
     func viewForZooming(in scrollView: UIScrollView) -> UIView? {
-        return imageView
+        return imageVideoContainer
     }
     
     func scrollViewDidZoom(_ scrollView: UIScrollView) {
         
         if scrollView.zoomScale > 1 {
-            if let image = imageView.image {
+            if let image = imageVideoContainer.image {
                 
-                let ratioW = imageView.frame.width / image.size.width
-                let ratioH = imageView.frame.height / image.size.height
+                let ratioW = imageVideoContainer.frame.width / image.size.width
+                let ratioH = imageVideoContainer.frame.height / image.size.height
                 let ratio = ratioW < ratioH ? ratioW : ratioH
                 let newWidth = image.size.width * ratio
                 let newHeight = image.size.height * ratio
-                let conditionLeft = newWidth*scrollView.zoomScale > imageView.frame.width
-                let left = 0.5 * (conditionLeft ? newWidth - imageView.frame.width : (scrollView.frame.width - scrollView.contentSize.width))
-                let conditioTop = newHeight*scrollView.zoomScale > imageView.frame.height
+                let conditionLeft = newWidth*scrollView.zoomScale > imageVideoContainer.frame.width
+                let left = 0.5 * (conditionLeft ? newWidth - imageVideoContainer.frame.width : (scrollView.frame.width - scrollView.contentSize.width))
+                let conditioTop = newHeight*scrollView.zoomScale > imageVideoContainer.frame.height
                 
-                let top = 0.5 * (conditioTop ? newHeight - imageView.frame.height : (scrollView.frame.height - scrollView.contentSize.height))
+                let top = 0.5 * (conditioTop ? newHeight - imageVideoContainer.frame.height : (scrollView.frame.height - scrollView.contentSize.height))
                 
                 scrollView.contentInset = UIEdgeInsets(top: top, left: left, bottom: top, right: left)
             }
@@ -306,3 +306,13 @@ extension NCViewerImageZoom: UIScrollViewDelegate {
     func scrollViewDidScroll(_ scrollView: UIScrollView) {
     }
 }
+
+//MARK: -
+
+class imageVideoContainerView: UIImageView {
+    var playerLayer: CALayer?
+    override func layoutSublayers(of layer: CALayer) {
+        super.layoutSublayers(of: layer)
+        playerLayer?.frame = self.bounds
+    }
+}

+ 7 - 8
iOSClient/Viewer/NCViewerVideo/NCViewerVideo.swift

@@ -33,8 +33,7 @@ class NCViewerVideo: NSObject {
     }()
     
     private let appDelegate = UIApplication.shared.delegate as! AppDelegate
-    private var imageView: UIImageView?
-    private var image: UIImage?
+    private var imageVideoContainer: imageVideoContainerView?
     private var durationSeconds: Double = 0
     private var viewerVideoToolBar: NCViewerVideoToolBar?
 
@@ -51,9 +50,9 @@ class NCViewerVideo: NSObject {
         }
     }
     
-    func initVideoPlayer(imageView: UIImageView?, viewerVideoToolBar: NCViewerVideoToolBar?, metadata: tableMetadata) {
+    func initVideoPlayer(imageVideoContainer: imageVideoContainerView?, viewerVideoToolBar: NCViewerVideoToolBar?, metadata: tableMetadata) {
                 
-        guard let imageView = imageView else { return }
+        guard let imageVideoContainer = imageVideoContainer else { return }
         if self.metadata == metadata { return }
         
         func initPlayer(url: URL) {
@@ -62,10 +61,11 @@ class NCViewerVideo: NSObject {
             self.player?.isMuted = CCUtility.getAudioMute()
             self.player?.seek(to: .zero)
             self.videoLayer = AVPlayerLayer(player: self.player)
-            self.videoLayer!.frame = imageView.bounds
+            self.videoLayer!.frame = imageVideoContainer.bounds
             self.videoLayer!.videoGravity = .resizeAspect
             
-            imageView.layer.addSublayer(videoLayer!)
+            imageVideoContainer.layer.addSublayer(videoLayer!)
+            imageVideoContainer.playerLayer = self.videoLayer
 
             // At end go back to start & show toolbar
             NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem, queue: .main) { (notification) in
@@ -92,8 +92,7 @@ class NCViewerVideo: NSObject {
         
         if let url = NCKTVHTTPCache.shared.getVideoURL(metadata: metadata) {
             
-            self.imageView = imageView
-            self.image = imageView.image
+            self.imageVideoContainer = imageVideoContainer
             self.viewerVideoToolBar = viewerVideoToolBar
             self.metadata = metadata