Masquer les contrôles dans AVPlayerViewController — seulement au début
Si vous définissez AVPlayerViewController.showsPlaybackControls à false, le contrôle ne sera pas le montrer à tous. Même si vous appuyez sur l'écran.
Je veux les contrôles de commencer caché, mais encore être en mesure de convoquer en appuyant dessus. Si j'ai mis le mentionné à true la propriété, ils commencent visible. (Oui ils disparaissent après quelques secondes.) Est-il un moyen de démarrer cachée, mais toujours accessibles?
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR: j'ai fini par faire mes propres contrôles pour une meilleure personnalisation. C'est plus difficile mais vaut le temps. Veuillez lire Apple est un exemple de code de référence. C'est à propos de la mise en œuvre du PiP, mais aussi à faire des contrôles personnalisés: https://developer.apple.com/library/prerelease/ios/samplecode/AVFoundationPiPPlayer/Introduction/Intro.html
Mise à JOUR: gemmage, AVPlayerViewController seulement les feux de touchesBegan événement, et pas touchesEnded événement. Mais c'est assez pour montrer les contrôles.
Abord, vous avez besoin de masquer le contrôle. Mettre ce code juste avant de vous présenter AVPlayerViewController
Puis une sous-classe AVPlayerViewController et d'ajouter cette fonction:
ANCIENNE SOLUTION:
Je viens de réglé ce problème. L'idée principale est de mettre une UIView sur le dessus de la AVPlayerViewController pour recevoir appuyez sur le geste, et de cacher que UIView lorsqu'il n'est plus nécessaire.
Voici le code:
Et quand vous avez besoin de masquer les commandes, faire ceci:
showsPlaybackControls
Je crois que j'ai résolu ce problème à l'aide de dynamic geste de reconnaissance de relations. La solution évite les contrôles personnalisés (pour la consistance), n'utilise que les API publique et n'a pas de sous-classe
AVPlayerViewController
(qui est explicitement interdite, comme il est noté dans les autres réponses).Voici comment:
Faire un conteneur view controller qui intègre
AVPlayerViewController
. (Ceci est utile quel que soit le contrôle, parce que vous avez besoin pour mettre la lecture logique quelque part.)Ensemble
showsPlaybackControls
àfalse
initialement.Ajouter un UITapGestureRecognizer de reconnaître la prise initiale.
Dans la méthode d'action pour le geste de reconnaissance, ensemble
showsPlaybackControls
àtrue
.Jusqu'à présent, cela pourrait fonctionner, mais les contrôles disparaîtrait immédiatement sur que la prise initiale. Pour corriger cela, placez-vous comme un délégué pour le geste de reconnaissance, de mettre en œuvre
gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:
et retourtrue
pour tous les autres unique robinet geste de reconnaissance.Voici la mise en œuvre effective de Swift; vérifier andreyvit/ModalMoviePlayerViewController repo pour le dernier code:
thegathering la réponse est bonne. Je voudrais remplacer touchesCancelled au lieu de sorte que les contrôles ne montrent pas, et ensuite se cacher de nouveau.
Une façon simple de le faire en Swift 3 est de créer
myController.showsPlaybackControls = false
, et de les recouvrir l'ensemble de la vue " joueur avec un bouton ou un geste de reconnaissance. Je l'intégrer dans un autre point de vue dans un autre contrôleur sur un storyboard pour faire simple et pour ne pas remplacer le joueur contrôleur. L'astuce est alors de cacher le bouton après avoir cliqué une fois, parce que le joueur contrôleur sera par la suite suivre les robinets pour afficher/masquer les commandes.