0

起動時に自動再生されるビデオがあります。短いクリップが終了すると、黒い画面が表示されます。サブビューを閉じて画像を表示したり、別のコントローラーを自動ロードしたりしたいですか?

以下は私のコードです:

 (void)viewDidLoad

 {

    {
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:@"cover" ofType:@"mp4"]];

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc]
                                       initWithContentURL:url];



    player.movieSourceType = MPMovieSourceTypeFile;

    [player setControlStyle:MPMovieControlStyleNone];

    player.view.frame = CGRectMake(0, 0, 768, 960);

    [self.view addSubview:player.view];
    [player play];


    player = nil;

}

助けてくれてありがとう..私はこれで新人です。

4

1 に答える 1

0

私は数週間前にこれの多くを理解しました. 利用可能な通知を確認してください。http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html

次のようなものを viewDidLoad に追加します。

// Remove the movie player view controller from the "playback did finish" notification observers
[[NSNotificationCenter defaultCenter] removeObserver:_moviePlayer
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:_moviePlayer];
// Register this class as an observer instead
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(movieFinishedCallback:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:_moviePlayer];

これで、ビューやサムネイルなどを再追加できるメソッドができました。

- (void)movieFinishedCallback:(NSNotification*)aNotification
{   
    // Obtain the reason why the movie playback finished
    NSNumber *finishReason = [aNotification userInfo][MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];

    if ([finishReason intValue] == MPMovieFinishReasonPlaybackEnded) {

       [self.view addSubview:self.moviePlayer.view];
    }

(このコードは私のプロジェクトからその場で適応されたものであり、適応するために考える必要があるかもしれません!)

MPMoviePlayerController には、ムービーの再生中、一時停止中、停止中、終了時などに発生する多くの通知があります。これらのメソッドにコードを追加して、プレゼンテーションを適切に制御できます。

私の場合、調査とハッキングに約 1 日 (およびクリーンアップと調整にさらに半日) かかりましたが、非常に優れた再生/一時停止の透明なボタンを取得することができました。プレーヤーの状態に基づいて、すべてのロードまたはアンロードが停止しました。これは、私が望むことを正確に行うシンプルなカスタム プレーヤー コントロールです。完全に実行可能です。1 つのプレイヤー ステートから始めて、必要なものを取得し、次のステートに移動するだけです。

于 2012-12-01T18:13:00.600 に答える