0

ええと、同じまたは類似した質問と回答に関する多くの質問を見つけることができました...しかし、何も役に立ちませんでした。プロパティ「controlStyle」を「MPMovieControlStyleFullscreen」として使用しない場合にのみ、「完了」ボタンが機能します。私はこのようにしてみました..

    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] はメイン ビューを表すためのものです。問題がないことは確認済みです。)

この問題について知っていることを教えてください。事前にt​​hx!

4

1 に答える 1

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];

この場合、「完了」ボタンは適切に機能し、モーダル MPMoviePlayerViewController を閉じます。

一方、現在のビュー階層に追加した場所からムービーをアニメーション化することにもっと興味がある場合は、これを達成するために私が行ったことの例を次に示します。

MPMoviePlayerControllerの controlStyle プロパティを に設定しMPMovieControlStyleFullscreenても同じ結果になることもわかりました。[完了] ボタンを押してもMPMoviePlayerController. に変更するとMPMovieControlStyleDefault、期待どおりに機能しました。ただし、私の場合、MPMoviePlayerController現在表示されている のビューに のビューをサムネイル サイズのサブビューとして追加していUIViewControllerます。私は最初にMPMoviePlayerControllerの controlStyle を に設定していMPMovieControlStyleNoneます。サムネイル サイズのムービー プレーヤー ビューの上にカスタムUIButtonがあり、ボタンのアクション メソッドで、の controlStyle をMPMoviePlayerControllertoに変更してから、ムービー プレーヤー ビューをフルスクリーン モードでアニメーション化するMPMovieControlStyleDefaultを呼び出しています。setFullscreen:animated:次に、「完了」ボタンをタップすると、プレーヤーが適切にアニメートされ、サムネイル サイズのサブビューに戻りますUIViewController。の見方。次に例を示します。

my の初期インスタンス化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];

注:また、moviePlayer のビューの上にカスタム UIButton (フルスクリーン再生を呼び出すため) を追加し、次のメソッドを呼び出すようにそのアクションを設定しました。

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

注:また、controlStyle を MPMovieControlStyleNone に戻す MPMoviePlayerWillExitFullscreenNotification を観察して処理します。

于 2012-07-21T23:36:46.093 に答える