Вопрос по ios, mpmovieplayercontroller, uiimageview – Как добавить UIImageView поверх MPMoviePlayerController | iOS | Цель С

2

У меня есть контроллер, где я отображаю видео с помощью 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];

Ваш Ответ

1   ответ
2

а затем добавьте 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];
}
Вы можете попытаться скрыть представление с помощью свойства alpha. Я успешно делал это в течение долгого времени. Увидетьmy answer to this question
Можете ли вы показать мне свой новый код ??? потому что я изменяю один все время
Я решил, как сказал MartinKenny, используя свойство alpha. Я должен был использовать MPMoviePlayerController, потому что мне нужно было не показывать контроллеры плеера. iVela
Кажется, я могу «изменить» просмотр плеера до его запуска, но после запуска видео я не могу его изменить. Я сделал, как вы сказали, и я мог бы добавить изображение поверх видеоплеера. Но затем я попытался установить image.hidden = YES перед добавлением представления в проигрыватель и установить image.hidden = NO после воспроизведения видео, и изображение не отображается :( iVela
и я предлагаю вам использовать MPMoviePlayerViewController вместо MPMoviePlayerController ...

Похожие вопросы