У меня есть экран входа в систему, для которого я хотел видеофон. Он воспроизводится, пока пользователь нажимает кнопки регистрации или входа. Стандартная вещь, которую вы видите в приложениях сегодня.
Вот что я делаю:
- (void)addPlayerLayer {
NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"login_signup_pink-girl" ofType:@"mp4"];
NSURL *movieURL = [NSURL fileURLWithPath:moviePath];
AVPlayer *player = [[AVPlayer alloc] initWithURL:movieURL];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = CGRectMake(0,0,self.view.frame.size.width+self.screenShift, self.view.frame.size.height);
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
self.playerView = [[UIView alloc] initWithFrame:self.view.bounds];
self.playerViewFrame = self.playerView.frame;
[self.playerView.layer addSublayer:playerLayer];
self.playerView.alpha = 0;
[self.view insertSubview:self.playerView atIndex:0];
[playerLayer.player play];
[UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.playerView.alpha = 1.0;
} completion:nil];
[UIView animateWithDuration:0.6 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.loginButton.alpha = 1.0;
self.createAccountButton.alpha = 1.0;
self.skipStepButton.alpha = 1.0;
self.mainSTbackgroundImageView.alpha = 0.0;
} completion:nil];
}
Он отлично работает в симуляторе iOS на iPhone 5, но при тестировании на реальном устройстве видео никогда не загружается, у меня просто черный фон. Он также корректно работает на моем iPhone 6 (физическом, а не симуляторе).
Это любопытная проблема, которая заставляет меня спросить:
- Почему видео не загружается на iPhone 5?
- Должен ли я как-то предварительно загружать видео? (5,7 МБ .mp4)
- Есть ли способ узнать, когда видео загружено и готово к показу? Иногда на симуляторе iPhone 5 есть небольшая задержка, из-за которой проявляется черный фон.