Как я могу заставить `-[MPMoviePlayerController backgroundView]` отображаться немедленно?

В настоящее время мой -[MPMoviePlayerController backgroundView] не появляется, пока фильм не загрузится достаточно. Так что UIActivityIndicatorView, который я туда поставил, появляется не сразу. Это сводит меня с ума. Единственное решение, которое было найдено, — разместить дублированное представление индикатора где-то между фоновым представлением и -[MPMoviePlayerController view]. Но это не выглядит обычным, и определенно является взломом иерархии представлений, который не гарантирует правильную работу. Если фоновый вид отображается сразу, все будет работать волшебным образом.

Как я могу сделать фоновый вид непосредственно перед загрузкой фильма?


person eonil    schedule 31.03.2011    source источник


Ответы (2)


Не используйте backgroundView, а вид самого контроллера фильма...

Следующие шаги (при условии, что ваш экземпляр MPMovieControllerPlayer называется moviePlayerController, а ваш экземпляр UIActivityIndicatorView называется activityIndicatorView)

  • Добавьте свой UIActivityIndicatorView поверх представления MPMoviePlayerController (например, [moviePlayerController.view addSubview:activityIndixatorView];)

  • Начать анимацию индикатора активности

  • Зарегистрируйтесь на MPMoviePlayerLoadStateDidChangeNotification

  • В обработчике вышеуказанного уведомления следите за moviePlayerController.loadState & MPMovieLoadStatePlayable == MPMovieLoadStatePlayable

  • Если указанное выше условие выполнено, скройте индикатор активности

person Till    schedule 31.03.2011
comment
К сожалению, MPMoviePlayerLoadStateDidChangeNotification уведомления появляются слишком рано или слишком поздно, поэтому индикатор активности исчезнет до отображения видео. Для медленных соединений временной интервал слишком велик. Так что я не мог использовать этот способ :( - person eonil; 31.03.2011
comment
Это странно... но вы можете использовать MPMoviePlayerPlaybackStateDidChange вместо или в дополнение к MPMoviePlayerLoadStateDidChangeNotification, чтобы скрыть этот индикатор активности. - person Till; 31.03.2011

Я не уверен, но может ли отображаться UIActivityIndicator над MPMoviePlayerController в полноэкранном режиме? может вам немного помочь

person visakh7    schedule 31.03.2011
comment
Как я уже упоминал в комментарии к ответу @Till, решение не могло решить проблему... - person eonil; 31.03.2011