ОК, в iOS очень мало вариантов для эмуляции заставки.Все, что мы можем сделать, это дождаться полной загрузки приложения, а затем создать Media Player и загрузить в него видео.
Я реализовал его с помощью следующего кода:
-(void) moviePlayBackDidFinish:(NSNotification*)notification
{
NSLog(@"Intro video stopped");
[mMoviePlayer release];
}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSURL* mMovieURL;
NSBundle *bundle = [NSBundle mainBundle];
if(bundle != nil)
{
NSString *moviePath = [bundle pathForResource:@"intro" ofType:@"mp4"];
if (moviePath)
{
mMovieURL = [NSURL fileURLWithPath:moviePath];
[mMovieURL retain];
}
}
mMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mMovieURL];
[mMovieURL release];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:mMoviePlayer];
mMoviePlayer.controlStyle = MPMovieControlStyleNone;
[mMoviePlayer.backgroundView addSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Splash/background.png"]] autorelease]];
mMoviePlayer.scalingMode = MPMovieScalingModeFill;
[window addSubview:mMoviePlayer.view];
[mMoviePlayer setFullscreen:YES animated:NO];
[window makeKeyAndVisible];
[mMoviePlayer play];
<... other stuff ...>
}
Мое видео занимает всего 1 МБ,Но этот код делает что-то другое, чем я хотел бы видеть:
- Прежде всего пользователь может видеть статический экран-заставку в течение нескольких секунд;
- Затем появляется черный экран для1 или 2 секунды.Я думаю, это происходит из-за того, что медиа-плеер загружен.
- Видео начинает воспроизводиться.
- Основной интерфейс загружается.
Как вы понимаете, мне не нравитсяпауза с черным экраном - это выглядит ужасно.
Насколько я вижу в своем журнале консоли, проблема заключается в том, что медиаплеер ожидает полной загрузки контроллера основного вида.
Несколько слов оосновной вид: я пишу приложение для iPad, а основной вид состоит из нескольких подпредставлений с несколькими изображениями.Каждое изображение и каждое подпредставление в главном представлении загружает некоторые данные из веб-службы Интернета через ASIHTTPRequest lib.
Я думаю, что Media Player ожидает завершения всех начальных подключений и только после этого запускает видео ...
Как заставить видео воспроизводиться до загрузки основного вида?А может я могу отложить загрузку основного XIB?