2014-01-11 4 views
0

Я использую этот кодВид не видно на UIWindow при добавлении во второй раз

UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0]; 
UIView * videoView = [[window subviews] lastObject]; 
[videoView addSubview:viewFullScreenToolbar]; 

добавить взгляд на самой высокой точки зрения для воспроизведения видео на весь экран. Когда нажата полноэкранная кнопка, этот код выполняет и представляет полноэкранное видео. Но когда полноэкранный режим закрыт, а затем снова нажат, viewFullScreenToolbar не отображается, хотя видео воспроизводится правильно в полноэкранном режиме. Плюс проблема только в ландшафтном режиме, она работает хорошо в портретном режиме.

+0

Вы удаляете 'viewFullScreenToolbar' из массива' subviews' окна перед добавлением его обратно? – jlehr

+0

Да, я сделал это. – brainforked

ответ

0

Его кажется настолько очевидным, как только вы найдете ответ.Итак, все, что мне нужно было сделать, это зарегистрироваться для уведомления об изменении ориентации.

NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; 

[center addObserver:self selector:@selector(ChangeOrientationIfFullScreen:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; 

И в методе вызывается, когда уведомление будет получено, я должен был установить кадры из подвидов вручную для каждого изменения ориентации. Это было немного накладных расходов, но, наконец, достигли плавного перехода на экран.

5

Это ... не лучший способ сделать то, что вы хотите. Не полагайтесь на конкретное окно, которое является «первым» окном, и не полагайтесь на конкретное представление, являющееся «последним» подвью. Эти вещи слишком подвержены изменениям.

Создайте IBOutlets на окнах и представлениях, которые хотите использовать, подключите их в файле .XIB и обратитесь к ним напрямую.

+0

Я должен сделать это так, потому что я не должен менять подход. Я просто должен решить эту проблему. – brainforked

+5

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

+1

Ну, вы можете, eW, назначить идентификатор интересующим вас представлениям и запросить иерархию представления для этого идентификатора. Например, omg, в html. Также работает для окон. Я уже ненавижу меня, я никогда не скажу этого снова. –

2

Это должно служить ваш purpose--

AppDelegate * appD = (AppDelegate *) [[UIApplication sharedApplication] делегат];

[appD.window addSubview: viewFullScreenToolbar]; [appD.window bringSubviewToFront: viewFullScreenToolbar];

+0

благодарит много приятеля. Я застрял в течение 3 дней на этой ошибке. Рассчитывал неправильное окно. –

0

Вы пытаетесь добавить представление в полноэкранное представление MPMoviePlayerController?

  1. Да. Вам нужно добавить subview в хакерский способ (аналогично тому, что вы перечисляете), потому что MPMoviePlayerController не предоставляет никаких привязок к полноэкранному просмотру видео. Вероятно, ваша проблема связана с тем, что этот subview не получает обратные вызовы вращения.

  2. Нет. Если у вас есть этот видеовизор, вам не следует обращаться к представлению с помощью UIWindow. Вы должны получить доступ к нему через свой контроллер. Затем, когда вы добавляете панель инструментов в качестве подзапроса, она будет получать обратные вызовы вращения.

Если у вас есть ситуация 1, я могу помочь в дальнейшем, но вы хотите сначала проверить.

[Update]

Если вы хотите добавить вид наложения на весь экран MPMoviePlayerController просмотра у Вас есть три варианта:

  1. не делают.
  2. Создайте свой собственный MoviePlayer на основе AVPlayer.
  3. Используйте хак, показанный в следующем примере: MoviePlayerFullscreenOverlay

Добавление вида наложения на полноэкранный просмотр MPMoviePlayerController не просто потому, что полноэкранный просмотр не доступен из API MPMoviePlayerController. Он требует доступа к просмотру через окно, добавления подсмотра, а затем вручную обработки обратных вызовов вращения. Боль в $%^*.

Пожалуйста, не используйте этот подход для любой другой ситуации.

+1

Да, это «№1», и мне, безусловно, нужна ваша помощь. – brainforked

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