0

iPad 용 비디오 플레이어를 만들고 있는데 회전을 제대로 움직이는 데 문제가 있습니다. 일반적으로 자동 회전 마스크를 설정하여 회전을 처리하지만 비디오 플레이어로 작업하고 있으므로 가로 세로 비율을 유지하려고하며 자동 회전 마스크로 어떻게 할 것인지 잘 모르겠습니다. MPMoviePlayerController의 회전을 애니메이트하는 방법은 무엇입니까?

나는 애니메이션없이 신속하고 더러운 솔루션은 단지 올바른 동작 얻을 않았다 : 그것은 제대로 작동

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    moviePlayer.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width*0.75); 
} 

을하지만, 꽤 아니다. 현재 데모 용 앱을 준비 중이므로 제대로 작동하지 않아도 충분합니다.

나는 다음을 시도하고 나는 그것이 작동하지 않는 이유를 추측 할 수 있다고 생각 : 맞아

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [UIView animateWithDuration:duration animations:^{ 
     moviePlayer.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width*0.75); 
    }]; 
} 

, self.view.frame 아직 업데이트되지 않았습니다.

하드 코딩 된 프레임없이이 문제를 해결하는 방법에 대한 조언이 있으십니까?

답변

0

이 할 수있는 청소기 방법이있을 수 있지만, 나는 새로운 프레임이 현재, 그리고 새로운 방향을 이용해야 어떤 계산 :

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    CGSize size = self.view.frame.size; 
    CGRect newRect; 
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { 
    newRect = CGRectMake(0, 0, MIN(size.width, size.height), MAX(size.width, size.height)); 
    } else { 
    newRect = CGRectMake(0, 0, MAX(size.width, size.height), MIN(size.width, size.height)); 
    } 

    [UIView animateWithDuration:duration animations:^{ 
    player.view.frame = newRect; 
    }]; 
} 
+0

내 동영상 플레이어가되도록 분할보기에 작동하지 않습니다. 너비는 703에서 768 사이에서 변경되며 높이는 너비를 기반으로합니다 (게시 된 코드 참조). –

+0

@Erik이 기법의 변형을 여전히 사용할 수 없습니까? 현재 오리 엔테이션이 무엇인지 알면 새 오리엔테이션을 알고 있으므로 90도 회전 인 경우 현재 너비와 높이를 바꾸고 그렇지 않으면 그대로 두십시오. –

+0

기본적으로'self.view.frame' 파일이 변경되기 전에 어떻게 변경 될지 알아야합니다. –

관련 문제