AVPlayerController: problemas de pantalla completa de Autolayout

Estoy jugando Video en mi aplicación Swift (iOS 9) con el siguiente código:

let fileUrl = NSBundle.mainBundle().URLForResource("welcome", withExtension: ".mp4") videoItem = AVPlayerItem(URL: fileUrl!) videoPlayer = AVPlayer(playerItem: videoItem) videoPlayer.addObserver(self, forKeyPath: "rate", options: [.New], context: nil) videoPlayerController.player = videoPlayer videoPlayerController.showsPlaybackControls = false videoPlayerController.view.frame = CGRectMake(0, 0, playerView.frame.size.width, playerView.frame.size.height) playerView.insertSubview(videoPlayerController.view, belowSubview: videoCoverView) videoPlayerController.willMoveToParentViewController(self) addChildViewController(videoPlayerController) videoPlayerController.didMoveToParentViewController(self) playerView.bringSubviewToFront(btnPlay) let asset = AVAsset(URL: fileUrl!) let imageGenerator = AVAssetImageGenerator(asset: asset) let time = CMTime(seconds: asset.duration.seconds/2.0, prefernetworkingTimescale: 1) do { let imageRef = try imageGenerator.copyCGImageAtTime(time, actualTime: nil) let coverImage = UIImage(CGImage: imageRef) videoCoverView.image = coverImage } catch { } 

videoPlayerController es una instancia de AVPlayerViewController . playerView se agrega a través de storyboard y tiene la configuration de Autolayout en él. Me enfrento a problemas de Autloayout una vez que aparecen los controles de jugador de AVPlayerViewController y también cuando bash ir en modo de pantalla completa a través de los controles del jugador. Aquí está el logging que se imprime.

 2016-05-07 15:18:19.325 VoxTrain[2085:66307] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) ( "<NSAutoresizingMaskLayoutConstraint:0x7fb6a2a3f2c0 h=-&- v=-&- _UIBackdropContentView:0x7fb6a2a02310.width == _UIBackdropView:0x7fb6a053bf90.width>", "<NSLayoutConstraint:0x7fb6a2992800 H:|-(14)-[UILabel:0x7fb6a2991220'Hi-Speed Scrubbing'] (Names: '|':_UIBackdropContentView:0x7fb6a2a02310 )>", "<NSLayoutConstraint:0x7fb6a2992850 H:[UILabel:0x7fb6a2991220'Hi-Speed Scrubbing']-(14)-| (Names: '|':_UIBackdropContentView:0x7fb6a2a02310 )>", "<NSLayoutConstraint:0x7fb6a29649a0 H:|-(0)-[_UIBackdropView:0x7fb6a053bf90] (Names: '|':UIView:0x7fb6a0549220 )>", "<NSLayoutConstraint:0x7fb6a298b8a0 H:[_UIBackdropView:0x7fb6a053bf90]-(0)-| (Names: '|':UIView:0x7fb6a0549220 )>", "<NSLayoutConstraint:0x7fb6a296f440 H:|-(0)-[UIView:0x7fb6a0549220] (Names: '|':AVAlphaUpdatingView:0x7fb6a053dae0 )>", "<NSLayoutConstraint:0x7fb6a296f490 H:[UIView:0x7fb6a0549220]-(0)-| (Names: '|':AVAlphaUpdatingView:0x7fb6a053dae0 )>", "<NSLayoutConstraint:0x7fb6a2a40cc0 'UIView-Encapsulated-Layout-Width' H:[AVAlphaUpdatingView:0x7fb6a053dae0(0)]>" ) 

Después del enfoque inicial, traté de establecer la autolayout videoPlayerController's vista videoPlayerController's con la configuration videoPlayerController's a false. Pero el problema aún persiste. ¿Cómo puedo solucionar estos problemas?

El problema es que intentas configurar showsPlaybackControls = true cuando tu AVPlayerController está en pantalla. Al hacerlo crea elementos de interfaz de usuario del sistema, lo que genera problemas de layout automático.

Los documentos son muy específicos sobre este punto:

No use esta propiedad para cambiar la visibilidad de los controles de reproducción mientras el controller de visualización del reproductor está en la pantalla, ya que al hacerlo crea o destruye elementos de interfaz de usuario.

Enlace: https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVPlayerViewController_Class/#//apple_ref/occ/instp/AVPlayerViewController/showsPlaybackControls

Use este código,

viewDidLoad método:

  let type : String! = "mp4" let targetURL : String? = NSBundle.mainBundle().pathForResource("Welcome", ofType: type) let videoURL = NSURL(fileURLWithPath:targetURL!) let player = AVPlayer(URL: videoURL) let playerController = AVPlayerViewController() playerController.player = player self.addChildViewController(playerController) self.playView.addSubview(playerController.view) playerController.view.frame = playView.bounds player.play() 

Y mi Vista de Storyboard se muestra a continuación,

introduzca la descripción de la imagen aquí

He creado la UIView, luego establezco la parte superior, izquierda, derecha y altura que resuelven. está funcionando para mí

Espero que sea de ayuda