2013-02-10 4 views
1

Я пробовал это, но он не работает, я боюсь с этим в течение последних 7 часов, пожалуйста, помогите мне. Я хочу добавить пользовательские кнопки в полноэкранный режим MPMoviePlayer.MPMoviePlayerController добавить subview в полноэкранном режиме

Код:

moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL]; 

     [self.view addSubview:moviePlayerController.view]; 
     moviePlayerController.fullscreen = YES; 

     UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 

     CustomControlsViewController *overlay = (CustomControlsViewController*)[mainStoryBoard instantiateViewControllerWithIdentifier:@"Custom Controls"]; 

     [moviePlayerController.view addSubview:overlay.view]; 

     [moviePlayerController play]; 

ответ

10

первую очередь, никогда не добавляйте подвидов в MPMoviePlayerController «s самого представления. Добавьте их в фоновое представление или его родительский элемент в качестве родного брата.

Это обсуждается в документации MPMoviePlayerController:

Рассмотрим вид Movie Player, чтобы быть непрозрачной структурой. Вы можете добавить свои собственные подзаголовки в контент слоя поверх фильма, но вы не должны изменять какое-либо из существующих подзонов, но вы . В дополнение к материалам наложения поверх видеоролика вы можете предоставить пользовательский фон , добавив subviews в представление в свойстве backgroundView.

второго, при использовании надлежащего полноэкранного режима, то MPMoviePlayerController не повторно использовать обычный вид, но добавляет его содержимое непосредственно на UIWindow инстанции. Следовательно, при использовании «правильного» полноэкранного режима вы получаете только следующую опцию; найдите текущее ключевое окно и добавьте свои элементы управления непосредственно к нему после перехода в полноэкранный режим.

Что-то вроде этого нужно сделать:

//are we in fullscreen-mode? 
if (player.fullscreen) 
{ 
    UIWindow *window = [UIApplication sharedApplication].keyWindow; 
    if (!window) 
    { 
     window = [[UIApplication sharedApplication].windows objectAtIndex:0]; 
    } 
    //we now got a proper window for use of our controls ... 
    //add them to the window instance! 
} 

В качестве альтернативы, просто не использовать «правильный» на весь экран, но размер мнение MPMovieViewController, чтобы покрыть весь экран - Я называю это «подделка» на весь экран. Одним из больших преимуществ этого варианта является то, что вы сможете использовать/улавливать/покрывать нормальную переориентацию.

+0

Я сделаю пользовательские элементы управления на «поддельном» полноэкранном режиме, thx! – 1337code

+0

О вашей первой точке - то, как я ее читал, нормально добавлять подпункты в представление movieplayer, но не изменять какие-либо изначально предоставленных представлений (например, итерации через subviews и их изменение). – Grav

+0

Вы можете безопасно добавлять подпункты к представлению плеера в соответствии с документацией «Вы можете добавить subviews к представлению в этом свойстве. Вы можете сделать это в тех случаях, когда вы хотите отображать пользовательские элементы управления воспроизведением или добавить другой настраиваемый контент, который имеет отношение к ваше приложение ". https://developer.apple.com/LIBRARY/IOS/documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/index.html#//apple_ref/occ/instp/MPMoviePlayerController/view – SomeGuy