2012-06-29 3 views
0

Ну, я мог бы найти много вопросов о тех же или подобных вопросах и ответах ... Однако ничто не могло мне помочь. Только когда я не использую свойство «controlStyle» как «MPMovieControlStyleFullscreen», работает кнопка «done». Я попробовал этот способ ..Кнопка «Готово» в MPMoviePlayerController не работает, когда полноэкранный режим

MPMoviePlayerController *mpMoviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"https://dl.dropbox.com/u/14218997/thxq.mp4"]]; 
    mpMoviePlayerController.controlStyle = MPMovieControlStyleNone; 
    [mpMoviePlayerController setUseApplicationAudioSession:NO]; 
    [mpMoviePlayerController setScalingMode:MPMovieScalingModeAspectFit]; 
    [mpMoviePlayerController setFullscreen:YES animated:YES]; 
    [mpMoviePlayerController.view setFrame:CGRectMake(0, 0, 1024, 768)]; 

    [[globalSingleton paintingView] addSubview:mpMoviePlayerController.view]; 

    [mpMoviePlayerController prepareToPlay]; 
    [mpMoviePlayerController play]; 

    mpMoviePlayerController.controlStyle = MPMovieControlStyleFullscreen; 

или этот путь ..

MPMoviePlayerController *mp; 
    MPMoviePlayerViewController *mpVC = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"https://dl.dropbox.com/u/14218997/thxq.mp4"]]; 
    mp = [mpVC moviePlayer]; 
    mp.controlStyle = MPMovieControlStyleFullscreen; 
    mp.fullscreen = NO; 
    mp.useApplicationAudioSession = NO; 
    mp.view.frame = CGRectMake(0, 0, 1024, 768); 

    [[globalSingleton paintingView] addSubview:mp.view]; 

([globalSingleton paintingView] только для представления основного вида. Я уже проверил, что нет никаких проблем на нем.)

Пожалуйста, поделитесь информацией о том, что вы знаете об этой проблеме. Thx заранее!

ответ

3

Основываясь на вашем коде, мне кажется, что вы намерены просто использовать полноэкранный фильм-плеер. В этом случае, вы, вероятно, лучше использовать MPMoviePlayerViewController, но вы должны представить его как модальный контроллер представления, используя текущий контроллер представления, как это:

MPMoviePlayerViewController *movieViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:someVideoURL]; 
movieViewController.moviePlayer.scalingMode = MPMovieScalingModeAspectFit; 

// Self is the UIViewController you are presenting the movie player from. 
[self presentMoviePlayerViewControllerAnimated:movieViewController]; 

Кнопка «Готово» должна работать должным образом в этом case и отклонить модальный MPMoviePlayerViewController

С другой стороны, если вас больше интересует анимация фильма, с которого вы добавили его в текущей иерархии представлений, вот пример того, что я сделал для достижения это:

Я также обнаружил, что установка контрольного элемента MPMoviePlayerController Родство до MPMovieControlStyleFullscreen имело тот же результат - кнопка «Готово» не закрыла MPMoviePlayerController. Когда я изменил его на MPMovieControlStyleDefault, он работал так, как ожидалось. Тем не менее, в моем случае, я добавляю вид MPMoviePlayerController в виде подсмотра размера миниатюр к отображаемому в настоящее время UIViewController. Первоначально у меня установлен тип управления MPMoviePlayerController: MPMovieControlStyleNone. У меня есть обычай UIButton поверх просмотра фильма с размерами миниатюр, а в методе действия кнопки я меняю controlStyle MPMoviePlayerController на MPMovieControlStyleDefault, а затем называю setFullscreen:animated:, который анимирует просмотр фильма в полноэкранном режиме. Затем, постукивая по кнопке «done», анимирует плеер обратно на место в виде подкачки в миниатюре моего UIViewController. Вот пример:

Начальные конкретизации моего MPMoviePlayerController:

// My moviePlayerController is a property 
self.moviePlayer = [[MPMoviePlayerController alloc] initWithURL:videoURL]; 
moviePlayer.controlStyle = MPMovieControlStyleNone; 
moviePlayer.scalingMode = MPMovieScalingModeAspectFit; 
moviePlayer.shouldAutoplay = NO; 


// Add the moviePlayer's view as a subview of a my UIViewController's view. 
moviePlayer.view.frame = CGRectMake(20, 20, 160, 90); 
[self.view addSubview:moviePlayer.view]; 

Примечание: Я также добавил обычай UIButton (для вызова полноэкранного режима воспроизведения) на вершине зрения моего MoviePlayer и установить это действие для вызова следующий метод:

- (void)buttonAction:(UIButton *)sender 
    { 
     self.moviePlayer.controlStyle = MPMovieControlStyleDefault; 
     [self.moviePlayer setFullscreen:YES animated:YES]; 
     [self.moviePlayer play]; 
    } 

Примечание: Я также наблюдать и обрабатывать MPMoviePlayerWillExitFullscreenNotification где я поставил controlStyle обратно в MPMovieControlStyleNone.

Смежные вопросы