我正在向容器视图中添加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];
}];
这将处理屏幕上屏幕上的元素动画,然后将屏幕外元素带到屏幕上。我很高兴听到所有的建议!
答案 0 :(得分:0)
解决了 - 这是我自己愚蠢的结果。视图层次结构确实有效,但是当我将self.frame
分配给moviePlayer.view.frame
时,它采用了容器视图的绝对坐标,而不是相对坐标。
一个愚蠢的错误。基本上,我只需要写
self.moviePlayer.view.frame = CGRectMake(0, 0, SCREEN_WIDTH_VC, SCREEN_HEIGHT_VC);
这会将它放在容器视图的顶部,因为这些坐标是相对于容器视图而不是屏幕(我只是把自己搞糊涂了)。