在viewDidLoad中运行MPMoviePlayerController的奇怪行为

Pet*_*zes 3 cocoa-touch mpmovieplayercontroller nstimer viewdidload ios

MediaPlayer我的应用程序启动后,我正在使用该框架播放相当大的电影(~200 MB).当我尝试在我的视频中播放视频时viewDidLoad,断点表示视图已添加,但视频未显示在设备上.

然后,我设置了一个按钮,以确认视频是否正常工作.从按钮运行IBAction显示没有问题.

所以那时我很难过.我想知道这是否与视频在应用程序启动后立即被调用的事实有关.所以我NSTimer在viewDidLoad调用中加了一个延迟5秒的时间.瞧,它运作良好.除非有最初的延迟,否则任何人都可以了解为什么视频无法播放?代码如下.

- (void)viewDidLoad {
      NSTimer *currentTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(playMovie) userInfo:nil repeats:NO];
        [[NSRunLoop mainRunLoop] addTimer:currentTimer forMode:NSRunLoopCommonModes];
      [super viewDidLoad];
}

-(IBAction)playMovie
{  
    NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"Speed" ofType:@"mov"];  
    NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];  
    MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];  

    [[NSNotificationCenter defaultCenter] addObserver:self  
                                             selector:@selector(moviePlaybackComplete:)  
                                                 name:MPMoviePlayerPlaybackDidFinishNotification  
                                               object:moviePlayerController];  

    [self.view addSubview:moviePlayerController.view];  
    moviePlayerController.fullscreen = YES;  
    [moviePlayerController play]; 
}  
Run Code Online (Sandbox Code Playgroud)

Ano*_*mie 10

尝试播放电影viewDidAppear:而不是viewDidLoad.在viewDidLoad调用该点时,视图尚未在视图层次结构中.您仍然可以创建MPMoviePlayerController viewDidLoad,只是在视图实际出现之前不要播放它.