2012-03-22 4 views
0

rotate an MPMoviePlayerController to landscape is to use an MPMoviePlayerViewController에게 가장 좋은 (유일한) 방법 인 것 같습니다.MPMoviePlayerViewController없이 MPMoviePlayerController 방향을 설정하십시오

현재 불행히도 루트 UIViewController가 설정되어 있지 않은 오픈 소스 게임을 수정 중입니다. MPMoviePlayerController를 사용하여 오리엔테이션을 설정할 수있는 방법이 있습니까? 아니면이 응용 프로그램에 루트 UIViewController를 해킹해야합니까?

편집 : Shivan Raptor에 대한 응답으로 게임은 Canabalt : https://github.com/ericjohnson/canabalt-ios입니다.

self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:self.videoTempFilePath]; 
self.moviePlayerController.repeatMode = MPMovieRepeatModeNone; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlaybackComplete:) 
              name:MPMoviePlayerDidExitFullscreenNotification 
              object:self.moviePlayerController]; 
[glView addSubview:self.moviePlayerController.view]; 

// MUST SET THIS HERE AFTER WE ADD AS SUBVIEW 
self.moviePlayerController.fullscreen = YES; 

[self.moviePlayerController play]; 

영화는 세로 연극이 잠긴 상태로 유지,하지만 난 풍경을 재생하고자 다음과 같이 나는 MPMoviePlayerController를 인스턴스화하고 있습니다.

+0

여기에 관련 코드를 게시 할 수 있습니까? – Raptor

답변

0

루트 UIViewController를 만들고 MPMoviePlayerViewController를 자식으로 만들었습니다. 이렇게하면 원하는 효과가 나타납니다.

0

나는 이것이 도움이 될 것이라고 생각합니다.

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 

if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
    [self.view setTransform:CGAffineTransformMakeRotation(M_PI/2)]; 
    return true; 
} 
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) { 
    [self.view setTransform:CGAffineTransformMakeRotation(M_PI * 2)]; 
    return true; 
} 
else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) { 
    [self.view setTransform:CGAffineTransformIdentity]; 
    return true; 
} 
else return false; 
} 
관련 문제