2012-09-19 57 views
0

我添加一個MPMoviePlayerController到容器視圖像這樣:子視圖(的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

事實上,這個視圖的子視圖並沒有隨其容器視圖一起移動。在這一點上,我猜測我的視圖層次結構沒有很好地設計/支持。哎呀! – bgoers

回答

0

解決 - 這是我自己愚蠢的結果。視圖層次結構確實有效,但是當我將self.frame指定爲moviePlayer.view.frame時,它使用容器視圖的絕對座標,而不是相對座標。

一個愚蠢的錯誤。基本上,我不得不寫

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

這將是正確的容器視圖的頂部,因爲這些座標是相對於該容器視圖,而不是屏幕(我只是混淆自己)。