2

Мне нужно добавить заголовок поверх верхней панели инструментов в MPMoviePlayerViewController, и если я играю видео, пользовательский ответ должен скрыть заголовок, как будто он скрывает любые другие элементы управления.Как добавить заголовок над MPMovieplayerViewController и скрыть его при нажатии

В настоящее время я добавляю UILabel как подпункт просмотра filmPlayer. Хотя этот подход добавляет заголовок поверх верхней панели (я устанавливаю соответствующий кадр), он не скрывает заголовок, когда пользователь нажимает на экран.

Есть ли какой-либо прямой api/hack, через который я могу получить доступ к верхней панели инструментов MPMoviePlayerViewController? Я думаю, что, если я могу добавить заголовок как subView верхней панели инструментов, процесс скрытия будет обрабатываться MPMoviePlayerViewController. Есть предположения?

Заранее благодарен!

+0

http://www.techotopia.com/index.php/Video_Playback_from_within_an_iOS_6_iPhone_Application – jkk

+0

@Mak, что ссылка не помогает. – Till

ответ

3

Отметьте, что мой ответ относится к MPMoviePlayerController, а не MPMoviePlayerViewController. Я бы посоветовал вам использовать его либо напрямую, либо через ссылку на MPMoviePlayerViewController.

Прежде всего, никогда не добавляйте ничего прямо на вид MPMoviePlayerController. Это склонно иметь всевозможные странные побочные эффекты и явно не рекомендуется в документации. Вместо этого используйте его backgroundView для размещения ваших пользовательских материалов или родителя MPMoviePlayerControllerview (что делает его родным братом).

Но опять же, это не решит проблему, которую вы описываете, имея этот вид/ярлык/независимо от того, появляетесь ли снова вместе с элементами управления, если пользователь нажимает или просто ждет.

Есть способы сделать это, но я боюсь, что они находятся в серой зоне - или, другими словами, имеют шанс получить отказ от Apple. На самом деле это не просто серая зона, но явное нарушение принципов разработки Apple.

Просто я использовал этот трюк в прошлом в крупных приложениях и никогда не обнаруживался/отклонялся.

Во-первых, вам необходимо найти интерфейс-представление вашего экземпляра MPMoviePlayerController.

/** 
* This quirky hack tries to locate the interface view within the supposingly opaque MPMoviePlayerController 
* view hierachy. 
* @note This has a fat chance of breaking and/or getting rejected by Apple 
* 
* @return interface view reference or nil if none was found 
*/ 
- (UIView *)interfaceView 
{ 
    for (UIView *views in [self.player.view subviews]) 
    { 
     for (UIView *subViews in [views subviews]) 
     { 
      for (UIView *controlView in [subViews subviews]) 
      { 
       if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) 
       { 
        return controlView; 
       } 
      } 
     } 
    } 
    return nil; 
} 

UIView *interfaceView = [self interfaceView]; 

Теперь, когда вы получили экземпляр, просто добавьте свой вид/ярлык/что-то на этот вид.

[interfaceView addSubview:myAwesomeCustomView]; 
+3

fyi - это изменено на «MPVideoPlaybackOverlayView» в iOS seven –

+0

Как использовать MPVideoPlaybackOverlayView, любое предложение? – AsifHabib

Смежные вопросы