2011-01-21 2 views
3

이 코드를 사용하여 탭 막대 컨트롤러가한 특정 클래스의 뷰 컨트롤러를 탭 막대 앱에서 자동으로 회전 시키지만 다른 모든 클래스의 뷰 컨트롤러는 세로로 유지해야합니다.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    //NSLog(@"object type %@" ,nil); 
    if([[self navigationController ] isKindOfClass:[UINavigationController class]]) 
     if([[[self navigationController] visibleViewController] isKindOfClass:[SLImageViewController class]]) 
      return YES; 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

SLImageViewController 클래스의 인스턴스가 필요하지만 다른 모든 회전합니다. 나는 내 SLImageViewController와 다른 픽스에 return YES를 추가하는 것과 같은 생각을 할 수있다.

누구나 내가 뭘 잘못하고 있다고 말할 수 있습니까?

+0

트리거 것이다 제시하거나 탭 중 하나에서의 UIViewController? 또한 .. 귀하의 질문에 대한 올바른 이해가 있습니까? 탭 중 특정 탭이 표시 될 때 자동 회전을 원하지만 다른 탭 중 하나가 아닌 경우 자동 회전을 원하십니까? – rgeorge

+0

UITabBarController 하위 클래스입니다. –

+0

SLImageViewController가 표시 될 때만 회전 시키길 원합니다. 다른 모든 사람들은 초상화를 유지해야합니다. –

답변

3

다음과 같은 방법으로이 작업을 수행 할 수 있습니다 :

  1. 설정 상태 표시 방향 viewWillAppearviewWillDisappear

-(void) viewWillAppear:(BOOL)animated { [super viewWillAppear: animated]; [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight]; }

-(void) viewWillDisappear:(BOOL)animated { [super viewWillDisappear: animated]; [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait]; }

수동으로 뷰를 회전 : self.view.transform = CGAffineTransformMakeRotation(M_PI/2);

  1. 코드는 UITabBarController가 하위에서 상기 해당 뷰 modaly가 shouldAutorotateToInterfaceOrientation 방법
관련 문제