为什么我的MPMoviePlayerController不能播放?

我试图让一个基本的.movvideo文件播放使用下面的代码,但是当button我已经分配的行动被按下,唯一显示的是黑色的框架,但没有播放video。 任何帮助表示赞赏。 谢谢。

@implementation SRViewController -(IBAction)playMovie{ NSString *url = [[NSBundle mainBundle] pathForResource:@"OntheTitle" ofType:@"mov"]; MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL fileURLWithPath:url]]; // Play Partial Screen player.view.frame = CGRectMake(10, 10, 720, 480); [self.view addSubview:player.view]; // Play Movie [player play]; } @end 

假定前提条件: 您的项目正在使用ARC

你的MPMoviePlayerController实例只是本地的,ARC没有办法告诉你需要保留那个实例。 由于控制器不保留其视图,结果是MPMoviePlayerController实例将在执行playMovie方法执行后直接释放。

要解决这个问题,只需将播放器实例的属性添加到您的SRViewController类中,并将该实例分配给该属性即可。

标题:

 @instance SRViewController [...] @property (nonatomic,strong) MPMoviePlayerController *player; [...] @end 

执行:

 @implementation SRViewController [...] -(IBAction)playMovie { NSString *url = [[NSBundle mainBundle] pathForResource:@"OntheTitle" ofType:@"mov"]; self.player = [[MPMoviePlayerController alloc] initWithContentURL: [NSURL fileURLWithPath:url]]; // Play Partial Screen self.player.view.frame = CGRectMake(10, 10, 720, 480); [self.view addSubview:self.player.view]; // Play Movie [self.player play]; } [...] @end