0

MPMoviePlayerController次のようにコンテナビューに追加しています:

self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL];
. . .
self.moviePlayer.view.frame = self.frame;
[self addSubview:self.moviePlayer.view];

selfコンテナ ビューです。このコンテナ ビューは、View Controller によって作成されると、画面外でインスタンス化されます。したがって、コンテナ ビューはビューに存在し、コンテナ ビューに存在しMPMoviePlayerControllerます。

画面上のコンテナ ビューをアニメーション化すると、機能します。他のビューがスライド オフし、このビューがスライド インします。ただし、MPMoviePlayerControllerフレームは画面外に置かれたままです。したがって、MPMoviePlayerControllerのコンテナ ビューは画面上で移動しますが、コンテナ ビューと一緒に移動しません。これは許可されていませんか、それとも何か不足していますか? コンテナ ビューをアニメーション化するコードは次のとおりです。

[UIView animateWithDuration:ANIMATION_LENGTH animations:^() {
    for(int i = beginTag; i < beginTag + [self subviews].count; i++) {
        UIView *viewPointer = [self viewWithTag:i];
        CGRect viewFrame = viewPointer.frame;
        viewFrame.origin.x -= SCREEN_WIDTH_VC;
        viewPointer.frame = viewFrame;
    }
} completion:^(BOOL finished) {
    [self.vidLoad playVideo];
}];

これにより、画面上にある要素を画面外でアニメーション化し、画面外の要素を画面上に表示することができます。すべての提案を聞いてうれしいです!

4

1 に答える 1

0

解決済み - これは私の愚かさの結果です。ビュー階層は確かに機能していましたが、に割り当てたときself.framemoviePlayer.view.frame相対座標ではなく、コンテナー ビューの絶対座標が使用されました。

ばかげた間違い。基本的に、私はただ書く必要がありました

self.moviePlayer.view.frame = CGRectMake(0, 0, SCREEN_WIDTH_VC, SCREEN_HEIGHT_VC);

これらの座標は、画面ではなくそのコンテナー ビューに相対的であるため、これはコンテナー ビューの真上に配置されます (私は自分自身を混乱させました)。

于 2012-09-19T18:59:06.120 に答える