2016-08-21 2 views
2

Ich habe einen Vollbild UIView. Wenn ich das Telefon rotiere, verkleinert sich die Ansicht etwas (und Sie sehen den schwarzen Hintergrund) und expandiert dann wieder, um Vollbild zu sein. Es animiert im Grunde wie erwartet. Die anderen Ansichten auf dem Bildschirm animieren entsprechend.Animation bei Drehung einer bestimmten UIView verhindern

Kann ich verhindern, dass dies für eine bestimmte Ansicht geschieht? Ich möchte, dass die Vollbildansicht im Vollbildmodus ohne Animation bleibt und den schwarzen Hintergrund anzeigt, aber dass die anderen Ansichten ihre Rotation animieren.

Art von wie Apple tut es in der Kamera-App. Der "Sucher" animiert nicht seine Drehung, aber die Knöpfe tun es.

Ich habe den folgenden Code in meinem ViewController. liveView ist der Vollbild-UIView erwähnt.

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 ist eine Erweiterung, die im Wesentlichen zu UIInterfaceOrientationAVCaptureVideoOrientation mit einer switch Anweisung übersetzt.

Dank - Joseph

Antwort

0

Bitte benutzen Sie self.liveView.layer.removeAllAnimations() versuchen:

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

funktioniert nicht. Außerdem wird eine seltsame weiße Ansicht hinzugefügt, die ebenfalls animiert. – Joseph

Verwandte Themen