2016-08-21 15 views
2

私はフルスクリーンUIViewを持っています。電話機を回転させると、ビューが少し縮小し(黒い背景が表示されます)、再びフルスクリーンになるように拡大されます。基本的には期待どおりのアニメーションです。 画面上の他のビューも同様にアニメートされます。特定のUIViewの回転時のアニメーションを防止する

特定のビューでこれが行われないようにすることはできますか? フルスクリーン表示は、黒い背景を明らかにするアニメーションなしでフルスクリーンを維持するだけで、他のビューは回転をアニメーションします。

カメラアプリでAppleがどのようにしているかのような種類です。 「ビューファインダ」は回転をアニメーション化しませんが、ボタンは機能しません。

私はViewControllerに次のコードを書いています。 liveViewは全画面UIViewです。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 

    super.viewWillTransition(to: size, with: coordinator) 

    coordinator.animateAlongsideTransition(in: self.liveView, animation: { (context) in 

     if let connection = (self.liveView.layer as! AVCaptureVideoPreviewLayer).connection { 
      connection.videoOrientation = AVCaptureVideoOrientation(ui: UIApplication.shared.statusBarOrientation) 
     } 

     }, completion: nil) 

} 

AVCaptureVideoOrentation基本的にswitch文でAVCaptureVideoOrientationUIInterfaceOrientationを変換する拡張機能です。

おかげ - ジョセフ

答えて

0

あなたはself.liveView.layer.removeAllAnimations()を試してみました:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 

    super.viewWillTransition(to: size, with: coordinator) 

    coordinator.animateAlongsideTransition(in: self.liveView, animation: { (context) in 

     if let connection = (self.liveView.layer as! AVCaptureVideoPreviewLayer).connection { 
      connection.videoOrientation = AVCaptureVideoOrientation(ui: UIApplication.shared.statusBarOrientation) 
     } 


     self.liveView.layer.removeAllAnimations() 


     }, completion: nil) 

} 
+0

は動作しません。さらに、アニメーションを開始する奇妙な白いビューを追加します。 – Joseph

関連する問題