2012-09-19 1 views
0

으로 애니메이션하지 :서브 뷰 (MPMoviePlayerController) 내가 지금처럼 컨테이너보기에 <code>MPMoviePlayerController</code>을 추가 해요 컨테이너보기

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.framemoviePlayer.view.frame에 할당하면 상대 좌표가 아닌 컨테이너보기의 절대 좌표가 사용됩니다.

어리석은 실수. 기본적으로, 난 그냥이 좌표는 해당 컨테이너보기가 아닌 화면 (난 그냥 내 자신을 혼동)을 기준으로,이 바로 컨테이너보기의 상단에 배치 할

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

를 작성했다.

관련 문제