6

내 응용 프로그램의 rootview로 splitviewcontroller를 사용하고 있습니다. 로그인 및 등록보기를 splitviewcontroller 상단의 모달보기로 표시해야합니다. splitViewController의 rootview의 viewdidAppear 메소드에서 login/reg보기를 표시하려고 시도하면 표시되지 않습니다. 다음 코드UISplitViewController 및 orientation - iOS <5.0

[self.window.rootViewController presentModalViewController:self.navController animated:NO]; 

하고 작동을 사용하여 AppDelegate에의 didFinishLaunching 방법에서 로그인/등록보기를 제시했습니다.

내 문제는 응용 프로그램이 가로 방향을 모두 지원하지만 장치에서 어느 방향으로 장치를 잡고 있더라도 가로 방향으로 만 LandscapeRight를 얻습니다. 그래서 가로 가로 방향으로 장치를 잡고 있으면 응용 프로그램은 로그인 화면을 뒤집어 놓습니다. LandscapeLeft &을 사용하고 있습니다. 지원되는 방향은 info.plist입니다.

문제를 해결하는 데 도움을주십시오. 또한 splitViewcontroller를 앱의 rootview로 사용하면 어떻게 볼 수 있습니까?

iOS 5.0 (전용)에서는 splitviewcontroller의 rootview 컨트롤러 - viewdidAppear 메소드에서 로그인보기를 표시 할 수 있습니다. 다른 모든 OS 버전에서이 경우는 작동하지 않으며 Appdelegate의 didFinishLaunching 메소드에서 제시해야합니다.

+0

로그인 화면의 컨트롤러에서 원하는 두 방향에 대해'- (BOOL) shouldAutorotateToInterfaceOrientation : (UIInterfaceOrientation) interfaceOrientation'을 구현 했습니까? –

+0

정확한 방법은 splitViewController의 viewDidAppear 메소드에서 가져온 것이어야합니다. iOS 5에서 작동한다고합니다. 소스를 제공하여 볼 수 있도록 할 수 있습니까? 어쩌면 거기에 뭔가 다르게 할 수 있습니다. –

답변

0

정확하게 기억하면 iOS는 첫 번째 회전까지 실제 방향 을 잘못보고합니다.

또한 IIRC를 사용하면 [[UIApplication sharedApplication] statusBarOrientation]을 사용하여이 문제를 방지합니다.

-1

창에서 로그인보기를 제거한 후 다음 코드를 사용하여 장치의 방향에 따라 rootviewcontroller 방향을 설정하십시오.

#define DegreesToRadians(x) ((x) * M_PI/180.0) 

[LoginviewContoller.view removeFromSuperview] 

self.viewController = [[[ExampleViewController alloc] initWithNibName:@"ExampleViewController" bundle:nil] autorelease]; 

switch(self.viewController.interfaceOrientation) 

{ 
case UIInterfaceOrientationPortrait:    
    NSLog(@"potrait");    
    break; 
case UIInterfaceOrientationPortraitUpsideDown: 
    NSLog(@"prtraitdown"); 
    break; 
case UIInterfaceOrientationLandscapeLeft: 
    self.viewController.view.transform = 
    CGAffineTransformMakeRotation(DegreesToRadians(270)); 
    NSLog(@"lanscapelef"); 
    break; 
case UIInterfaceOrientationLandscapeRight: 
    self.viewController.view.transform = CGAffineTransformMakeRotation(DegreesToRadians(90)); 
    NSLog(@"landcsape righ"); 
    break; 
} 

[self.window addSubview:self.viewController.view]; 

장치 방향에 따라 Rootview 컨트롤러를로드합니다.

관련 문제