Rotate totally Landscape view when movie play in VLCPlayer with swift 3

前端 未结 2 1801
囚心锁ツ
囚心锁ツ 2021-01-26 03:46

I would like to rotate my view controller when movie play.
My question might be duplicate but I tried many ways when I find in stack overflow. But all codes do not work. Ma

2条回答
  •  故里飘歌
    2021-01-26 04:24

    I had a solution in the linked answer, but I adjusted for landscape. Follow these steps and it will give you the desired functionality.

    Swift 3

    In AppDelegate:

    /// set orientations you want to be allowed in this property by default
    var orientationLock = UIInterfaceOrientationMask.all
    
    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
            return self.orientationLock
    }
    

    In some other global struct or helper class, here I created AppUtility:

    struct AppUtility {
    
        static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {
    
            if let delegate = UIApplication.shared.delegate as? AppDelegate {
                delegate.orientationLock = orientation
            }
        }
    
        /// Added method to adjust lock and rotate to the desired orientation
        static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) {
    
            self.lockOrientation(orientation)
    
            UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")
        }
    
    }
    

    Then in the desired ViewController you want to lock and rotate orientations, like your movie controller:

     override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    
        // rotate and lock
        AppUtility.lockOrientation(.landscape, andRotateTo: .landscapeRight)
    
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    
        // Don't forget to reset when view is being removed
        AppUtility.lockOrientation(.all)
    }
    

提交回复
热议问题