0

我正在向MPMoviePlayerController容器视图中添加一个,如下所示:

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

self是容器视图。此容器视图在由视图控制器创建时在屏幕外实例化。所以容器视图驻留在视图中,而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.frame给时moviePlayer.view.frame,它采用了容器视图的绝对坐标,而不是相对坐标。

一个愚蠢的错误。基本上,我只需要写

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

这会将其放置在容器视图的顶部,因为这些坐标是相对于该容器视图而不是屏幕(我只是自己弄糊涂了)。

于 2012-09-19T18:59:06.120 回答