Browse Source

fix picture in picture

Signed-off-by: marinofaggiana <marino@marinofaggiana.com>
marinofaggiana 3 years ago
parent
commit
ac1c8f4393

+ 2 - 1
iOSClient/Menu/NCMenu.swift

@@ -89,7 +89,8 @@ class NCMenu: UITableViewController {
 extension NCMenu: FloatingPanelControllerDelegate {
 
     func floatingPanel(_ vc: FloatingPanelController, layoutFor newCollection: UITraitCollection) -> FloatingPanelLayout? {
-        return NCMenuFloatingPanelLayout(height: self.actions.count * 60 + Int((UIApplication.shared.keyWindow?.rootViewController!.view.safeAreaInsets.bottom)!))
+        let safeAreaInsetsBottom = Int(UIApplication.shared.keyWindow?.rootViewController?.view.safeAreaInsets.bottom ?? 0)
+        return NCMenuFloatingPanelLayout(height: self.actions.count * 60 + safeAreaInsetsBottom)
     }
     
     func floatingPanel(_ vc: FloatingPanelController, behaviorFor newCollection: UITraitCollection) -> FloatingPanelBehavior? {

+ 10 - 1
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift

@@ -25,6 +25,7 @@ import Foundation
 import NCCommunication
 import CoreMedia
 import UIKit
+import AVKit
 import MediaPlayer
 
 class NCPlayerToolBar: UIView {
@@ -339,12 +340,20 @@ class NCPlayerToolBar: UIView {
         }
         muteButton.isEnabled = true
         
-        if CCUtility.fileProviderStorageExists(metadata.ocId, fileNameView: metadata.fileNameView) && ncplayer?.pictureInPictureController != nil {
+        if CCUtility.fileProviderStorageExists(metadata.ocId, fileNameView: metadata.fileNameView) {
             pipButton.setImage(NCUtility.shared.loadImage(named: "pip.enter", color: .white), for: .normal)
             pipButton.isEnabled = true
+            if let ncplayer = self.ncplayer, let playerLayer = ncplayer.videoLayer, ncplayer.pictureInPictureController == nil {
+                ncplayer.pictureInPictureController = AVPictureInPictureController(playerLayer: playerLayer)
+                ncplayer.pictureInPictureController?.delegate = ncplayer
+            }
         } else {
             pipButton.setImage(NCUtility.shared.loadImage(named: "pip.enter", color: .gray), for: .normal)
             pipButton.isEnabled = false
+            if let ncplayer = self.ncplayer, ncplayer.pictureInPictureController != nil {
+                ncplayer.pictureInPictureController = nil
+                ncplayer.pictureInPictureController?.delegate = nil
+            }
         }
         
         if timeSeek != nil {