Как определить, когда элементы управления iPhone MPMoviePlayer появляются/исчезают?

StackOverflow https://stackoverflow.com/questions/2466829

Вопрос

Я пытаюсь добавить пользовательские кнопки слева и справа от стандартных элементов управления перемоткой/воспроизведением/вперед в представлении MPMoviePlayerController (OS 2.x и выше).Я разобрался, как добавить их в окно плеера, но они всегда видны.Есть ли способ определить, когда появляются и исчезают стандартные элементы управления?

Это было полезно?

Решение

Хорошо, понял, делай так:

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 это ваш экземпляр плеера.В самой глубокой петле MPFullScreenVideoOverlay Экземпляр представления будет иметь альфа == 0,0, если элементы управления скрыты, или альфа 1,0, если элементы управления показаны.Вы можете добавить наблюдателя и стрелять по мере необходимости.Я знаю, что это не элегантно, но у меня это работает, поскольку Apple ничего не документировала относительно этой задачи.

Ваше здоровье ...

Другие советы

Ответ киберкоровы правильный, просто нужно внести небольшие изменения, чтобы сделать ответ более точным.

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

   }
}

я изменил самый внутренний цикл.На самом деле 1004 — это тег элементов управления MPMoviePlayer, поэтому он будет работать более точно.

Посмотрите на свойство MovieControlMode.Вы можете установить MPMovieControlMode

MPMovieControlMode Параметры для отображения элементов управления воспроизведением фильмов.

typedef enum {
   MPMovieControlModeDefault,
   MPMovieControlModeVolumeOnly,
   MPMovieControlModeHidden
} 

MPMovieControlMode;

Вы также можете проверить MPMoviePlayerScalingModeDidChangeNotification.

до iOS3.2
обнаружить «исчезновение» легко:

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

обнаружить внешний вид немного сложнее (возможно, есть лучший способ):

...
[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
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top