質問

ユーザーがボタンを押したときにMPMoviePlayerviewControllerを作成する簡単なビューがあり、MoviePlayerviewControllerAnimated:Methodを使用してボタンを押します。新しいビューコントローラーがスライドし、映画プレーヤーを示しています。

ただし、ボタンが押されると、現在のビューコントローラーが底をスライドし、醜い(おそらくデフォルトの)白いビューを表示します。これは、ムービービューコントローラーが表示されるまで、0.5秒から数秒の秒のどこにでも貼り付けられます。ムービービューコントローラーがプレーヤーを表示する前に映画の一部をダウンロードしているかのように、それは私のネットワーク接続に依存しているようです。

私は何か間違ったことをしていますか、それともどうすればこれを回避できますか?私は本当に映画ビューコントローラーを直接見せたいだけです。おそらく、再生ボタンを保持していたが、モーダルビューコントローラーのようにアニメーション化された以前のビューコントローラーをスライドさせないかもしれません。

ありがとう!

クリストフ

役に立ちましたか?

解決 2

ビューの背景を黒に設定するだけでした。遅延を修正しませんが、見た目がずっと良くなります。

  theMovieVC.view.backgroundColor = [UIColor blackColor];

他のヒント

解決策は、親ビューが作成されたときにプレーヤービューコントローラーを開始し、次に電話をかけることでした prepareToPlaymoviePlayer その中。これにより、再生ボタンがプッシュされたときのレイテンシが削除され、(私が推測する)ユーザーが映画を再生できる親ビューに到達したときに移動します。

編集:これにより遅延が削除されますが、何らかの理由で、ムービービューコントローラーの初期化もロードされたときに自動再生するため、それは良い解決策ではありません。

これは私がiOS> 3.2で行うことです:

- (void) play {
    mMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mMovieURL];

    if ([mMoviePlayer respondsToSelector:@selector(loadState)]) 
    {
        [[NSNotificationCenter defaultCenter] addObserver:self 
                                                 selector:@selector(moviePreloadDidFinishIOS32:) 
                                                     name:MPMoviePlayerContentPreloadDidFinishNotification 
                                                   object:nil];


        [mMoviePlayer prepareToPlay];
        [mMoviePlayer play];
        mMoviePlayer.controlStyle = MPMovieControlStyleEmbedded;
        [mMoviePlayer setMovieControlMode:MPMovieControlModeDefault];
        [mMoviePlayer setBackgroundColor:[UIColor clearColor]];
    }
}

- (void) moviePreloadDidFinishIOS32:(NSNotification*)notification;
{
    // Remove observer
    [[NSNotificationCenter  defaultCenter] 
     removeObserver:self
     name:MPMoviePlayerContentPreloadDidFinishNotification
     object:nil];

    self.view = mMoviePlayer.view;
}

したがって、viewdidloadでは、必要なものをインスタンス化できます(たとえば、uiactivityindicatorView)。ビューコントローラーは、プリロードが完了したときにのみ交換されます。

アプリで同じ問題に気づいています。誰かがこの問題を避けるための提案を持っていますか?

私の場合、MPMoviePlayerviewControllerをモーダルポップアップとしてUIにプッシュしています。

// build the movie player
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
MPMoviePlayerViewController *movieViewController = [[[MPMoviePlayerViewController alloc] initWithContentURL:request.URL] autorelease];
[movieViewController.moviePlayer prepareToPlay];
movieViewController.view.backgroundColor = [UIColor blackColor];

// show the movie player view
[self.parentViewController presentModalViewController:movieViewController animated:YES];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top