Question

Je suis en train d'ajouter des boutons personnalisés à gauche et à droite du retour rapide standard / jeu / commandes avancées dans une vue MPMoviePlayerController (OS 2.x et plus). Je l'ai compris comment les ajouter à la fenêtre du lecteur, mais ils sont toujours visibles. Est-il un moyen de détecter le moment où les contrôles standards apparaissent et disparaissent?

Était-ce utile?

La solution

Ok, il a obtenu, faire comme ceci:

BOOL controlsVisible = NO;
for(id views in [[_moviePlayer view] subviews]){
 for(id subViews in [views subviews]){
   for (id controlView in [subViews subviews]){
     controlsVisible = ([controlView alpha] <= 0.0) ? (NO) : (YES);
   }
  }
}
NSLog(@"player controls are visible: %d", controlsVisible);

_movePlayer est votre instance du lecteur. Dans la boucle la plus profonde, la MPFullScreenVideoOverlay instance de vue aura alpha == 0.0 si les contrôles sont cachés, ou alpha 1.0 si les contrôles sont affichés. Vous pouvez ajouter un observateur et tirer les choses au besoin. Je sais que n'est pas élégant mais il fonctionne pour moi, comme Apple a rien documenté au sujet de cette tâche.

Vive ...

Autres conseils

La réponse de cybercow est juste il suffit d'ajouter peu de modifications pour rendre la réponse plus précise.

BOOL controlsVisible = NO;
for(id views in [[self.moviePlayerViewController view] subviews])
{
   for(id subViews in [views subviews])
   {
      for (id controlView in [subViews subviews])
      {
          if ([controlView isKindOfClass:[UIView class]] && ((UIView*)controlView).tag == 1004)
          {
             controlsVisible = ([controlView alpha] <= 0.0) ? (NO) : (YES)               
          }
      }

   }
}

i changé la boucle la plus intérieure. En fait, 1004 est la balise de MPMoviePlayer contrôles afin qu'il fonctionne avec plus de précision.

Regardez dans la propriété movieControlMode. Vous pouvez régler la MPMovieControlMode

MPMovieControlMode Options pour afficher les commandes de lecture de film.

typedef enum {
   MPMovieControlModeDefault,
   MPMovieControlModeVolumeOnly,
   MPMovieControlModeHidden
} 

MPMovieControlMode;

Vous pouvez également consulter MPMoviePlayerScalingModeDidChangeNotification

avant iOS3.2 pour détecter "disapierance" est facile:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];

pour détecter appierance est plus difficile (peut-être il y a une meilleure façon):

...
[moviePlayerController play];
mainTimer = [NSTimer scheduledTimerWithTimeInterval:1/100 target:self selector:@selector(tick) userInfo:nil repeats:YES];

- (void)tick {
  if( [[[UIApplication sharedApplication] windows] count] < 2 ) return;

  moviePlayerWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
  if( moviePlayerWindow ){
    [mainTimer invalidate], mainTimer=nil;
    // here you have moviePlayerWindow
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top