Frage

Ich versuche-Buttons nach links und rechts neben der Standard-Rücklauf / Wiedergabe / vorverlegten Fußrasten in einer MPMoviePlayerController Ansicht (O 2.x und höher) hinzuzufügen. Ich habe herausgefunden, wie sie in den Player-Fenster hinzufügen, aber sie sind immer sichtbar. Gibt es eine Möglichkeit zu erkennen, wenn der Standard-Steuerelemente erscheinen und verschwinden?

War es hilfreich?

Lösung

Ok, habe es, machen wie folgt aus:

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);

Wo _movePlayer Ihre Instanz des Spielers ist. In der tiefsten Schleife, die MPFullScreenVideoOverlay Beispiel wird Alpha == 0,0, wenn die Kontrollen sind versteckt, oder alpha 1.0, wenn die Kontrollen gezeigt sind. Sie können einen Beobachter und Feuer Dinge je nach Bedarf hinzufügen. Ich weiß nicht elegant, aber es funktioniert für mich, wie die von Apple etwas in Bezug auf diese Aufgabe nicht dokumentiert hat.

Prost ...

Andere Tipps

cybercow Antwort stimmt nur wenig Änderung hinzufügen müssen, um die Antwort genauer zu machen.

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)               
          }
      }

   }
}

Ich habe die meisten innere Schleife. Eigentlich 1004 ist der Tag der MPMoviePlayer Kontrollen, damit es genauer arbeiten.

Blick in die movieControlMode Eigenschaft. Sie können die MPMovieControlMode gesetzt

MPMovieControlMode Optionen für die Filmwiedergabesteuerung angezeigt wird.

typedef enum {
   MPMovieControlModeDefault,
   MPMovieControlModeVolumeOnly,
   MPMovieControlModeHidden
} 

MPMovieControlMode;

Sie können auch MPMoviePlayerScalingModeDidChangeNotification Besuche

pre iOS3.2
"Disapierance" zu erkennen ist einfach:

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

appierance zu erkennen ist etwas schwieriger (vielleicht gibt es eine bessere Art und Weise):

...
[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
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top