Solo muestra contentOverlayView en AVPlayerViewController cuando los controles se muestran

Estoy intentando agregar un button adicional a AVPlayerViewController usando el contenido OverViewView. El problema es que solo quiero mostrar el button cuando se muestran los controles del jugador. En este momento siento que esto no es posible, pero quería asegurarme. ¿Alguien puede confirmar si esto es posible actualmente?

Suponiendo que está ejecutando la pantalla completa de AVPlayerViewController, puede agregar un UITapGestureRecognizer a la vista del controller. Pero se necesitaron algunos methods UIGestureRecognizerDelegate. Agrego la subview a la vista de AVPlayerViewController no a la vista de contenido OverView.

let controller = AVPlayerViewController() controller.player = self.player let yourView = controller.view let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(VideoPlayer.onCustomTap(_:))) tapGestureRecognizer.numberOfTapsRequinetworking = 1; tapGestureRecognizer.delegate = self yourView.addGestureRecognizer(tapGestureRecognizer) self.yourSubView = YourView() controller.view.addSubview(yourSubView) parentViewController.modalPresentationStyle = .FullScreen; parentViewController.presentViewController(controller, animated: false, completion: nil) 

Agregue UIGestureRecognizerDelegate a su class y compruebe que la altura y el ancho de cualquier vista de toques es la altura y el ancho de la pantalla. Esto, aunque evidentemente hacky es la única manera que he encontrado de estar tan cerca de trabajar. El jugador controla como desaparecer 5 segundos en el juego y reaparecer al final … esto puede ser solucionado con los observadores en AVPlayer. Intenté seguir esta ruta y cosas como el button ffwd me harán abandonar esto para un jugador personalizado.

 extension VideoPlayer: UIGestureRecognizerDelegate { func onCustomTap(sender: UITapGestureRecognizer) { if yourSubView.alpha > 0{ UIView.animateWithDuration(0.5, animations: { self.yourSubView.alpha = 0; }) } else { UIView.animateWithDuration(0.5, animations: { self.yourSubView.alpha = 1; }) } } public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { if let _touchView = touch.view { let screenRect:CGRect = UIScreen.mainScreen().bounds let screenWidth :CGFloat = screenRect.size.width; let screenHeight:CGFloat = screenRect.size.height; if _touchView.bounds.height == screenHeight && _touchView.bounds.width == screenWidth{ return true } } return false } public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true } }