如何在MPMoviePlayerController | iOS | Objective C上添加UIImageView

如何在MPMoviePlayerController | iOS | Objective C上添加UIImageView,ios,uiimageview,mpmovieplayercontroller,Ios,Uiimageview,Mpmovieplayercontroller,我有一个控制器,使用MPMoviePlayerController显示视频。我需要在视频上放一张图片 我正在尝试以下代码,但它没有显示。我错过了什么 // method to play the video - (void)playVideoInLoopMode:(BOOL)loop { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"m4v"]];

我有一个控制器,使用MPMoviePlayerController显示视频。我需要在视频上放一张图片

我正在尝试以下代码,但它没有显示。我错过了什么

// method to play the video
- (void)playVideoInLoopMode:(BOOL)loop {
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"m4v"]];

    MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:url];
    mp.controlStyle = MPMovieControlStyleNone;

    if (loop) {
        mp.repeatMode = MPMovieRepeatModeOne;        
    }

    mp.view.frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height);
    self.player = mp;
    [self.view addSubview:self.player.view];

    [self.player prepareToPlay];

    [self.player play];
}

// method to add the image
- (void) addImageLayer {
    image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myimage"]];
    image.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    [self.view addSubview:image];
}
首先,我用[self playVideoInLoopMode:YES]方法运行视频,5秒钟后,我尝试用[self addImageLayer]方法放置图像层

在我的AppDelegate.h中,我在didFinishLaunchingWithOptions中有以下代码:

 MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];

    [self.window addSubview:myVC.view];
    [self.window makeKeyAndVisible];

尝试将图像视图添加到mp.view,然后将mp.view添加到常规视图 例如,如果图像始终相同,您可以将其添加到起始代码中,并删除添加视图的方法

// method to play the video
- (void)playVideoInLoopMode:(BOOL)loop 
{
   NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"m4v"]];

   MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:url];
   mp.controlStyle = MPMovieControlStyleNone;

   if (loop) 
   {
       mp.repeatMode = MPMovieRepeatModeOne;        
   }

   mp.view.frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height);
   self.player = mp;
   [self.view addSubview:self.player.view];
   image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myimage.png"]];
   image.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
   [self.player addSubview:image];
   [self.player prepareToPlay];
   [self.player play];
}

尝试将图像视图添加到mp.view,然后将mp.view添加到常规视图 例如,如果图像始终相同,您可以将其添加到起始代码中,并删除添加视图的方法

// method to play the video
- (void)playVideoInLoopMode:(BOOL)loop 
{
   NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myvideo" ofType:@"m4v"]];

   MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:url];
   mp.controlStyle = MPMovieControlStyleNone;

   if (loop) 
   {
       mp.repeatMode = MPMovieRepeatModeOne;        
   }

   mp.view.frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height);
   self.player = mp;
   [self.view addSubview:self.player.view];
   image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myimage.png"]];
   image.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
   [self.player addSubview:image];
   [self.player prepareToPlay];
   [self.player play];
}

似乎我可以在开始播放之前“更改”播放器视图,但在视频开始运行之后,我无法修改它。我已经按照你说的做了,我可以在视频播放器上添加图像。但是,我尝试在将视图添加到播放器之前设置image.hidden=YES,在播放视频且图像未显示后设置image.hidden=NO:(您可能想尝试使用alpha属性隐藏视图。我已经成功地这样做了很长一段时间。请参阅,我建议您使用MPMoviePlayerController代替MPMoviePlayerController…正如MartinKenny所说,我已经解决了使用alpha属性的问题。Calleth我必须使用MPMoviePlayerController,因为我需要能够不使用如何使用播放器控制器。你也可以使用新的控制器,只需通过movieplayerviewcontroller.moviePlayer转到MPMoviePlayerController即可。moviePlayer原因如果在你的播放器中,你做出分开两个手指的手势,它将进入全屏模式,如果没有控件,你将无法返回;)似乎我可以“更改”在开始播放之前,但在视频开始运行之后,我无法修改播放器视图。我已按照您所说的操作,可以在视频播放器上添加图像。但是,在将视图添加到播放器之前,我已尝试设置image.hidden=是,在视频播放且图像未显示之后,设置image.hidden=否:(您可能想尝试使用alpha属性隐藏视图。我已经成功地这样做了很长一段时间。请参阅,我建议您使用MPMoviePlayerController代替MPMoviePlayerController…正如MartinKenny所说,我已经解决了使用alpha属性的问题。Calleth我必须使用MPMoviePlayerController,因为我需要能够不使用如何使用播放器控制器。您可以对新的播放器执行相同的操作,只需通过movieplayerviewcontroller.moviePlayer转到MPMoviePlayerController即可。因为如果在您的播放器中使用两个手指分开的手势,它将进入全屏模式,如果没有控件,您将无法返回;)