2011-03-10 3 views
1

나는 보통 UIViewController의 하위 클래스가 있습니다. App을로드 할 때 프로그램 적으로 넣어야하는 요소의 크기를 조정해야합니다. 물론, 크기는 인터페이스의 방향에 따라 달라집니다 그래서 내가 그랬어 :UIViewController interfaceOrientation 문제

- (void)viewDidLoad { 
    switch([self interfaceOrientation]) { 
    case UIInterfaceOrientationPortrait: 
    case UIInterfaceOrientationPortraitUpsideDown: 
      NSLog(@"Portrait"); 
      break: 
    case UIInterfaceOrientationLandscapeLeft: 
    case UIInterfaceOrientationLandscapeRight: 
      NSLog(@"Landscape"); 
      break; 
    } 

그러나 시뮬레이터/장치의 방향에 상관없이,이 사건은 모든 것이 제대로 회전 경우에도 항상있는 viewDidLoad/WillAppear의 초상화이다 . Plist에서 지원되는 모든 방향을 추가했습니다. 힌트?

+0

똑같은 문제가 발생했습니다! 이것은 항상 시뮬레이터에서 문제가되었습니다. 가장 좋은 점은 "willRotate"에 침입하면 가로로 회전 할 것이라고 알려줍니다. 다음으로 layoutSubview에서 중단됩니다. 거기서 방향을 확인하면 초상화입니다! WTF? – Krumelur

+0

'shouldAutorotateToInterfaceOrientation'을 재정의하고 거기서'YES'를 돌려 주어야한다는 것이 명백하지 않습니까 ?? 그렇게했다면 코드를 해당 메소드로 이동하십시오. – Mazyod

답변

0

1) willAppear의 인터페이스 방향이 잘못된 인터페이스 방향을 반환하는지 확인하십시오. 2) 메인 뷰 컨트롤러는 윈도우 만의 ViewController 있는지 확인) 여기 http://developer.apple.com/library/ios/#qa/qa1688/_index.html

3을 찾아보십시오 (창에서 하나 개의 VC)

8

[UIApplication sharedApplication].statusBarOrientation를 시도하고 스위치에, UIDeviceOrientationPortrait에 대한 UIDeviceOrientationPortraitUpsideDown 등을 확인가 [self interfaceOrientation]은 내 경험에 신뢰할 수 없습니다.

+0

나는 statusBarOrientation을 시도한 적이 없다. 아이 패드를 테이블에 올려 놓으면 알려주는 이래로이 장치는 쓸모가 없다. – IssamTP

+0

상태 표시 줄 팁이 저장되었습니다. UISplitViewController는 항상 prortrait를 반환합니다. – Krumelur

+0

statusBarOrientation은 UIInterfaceOrientation (UIDeviceOrientation이 아님)을 반환하므로 UIInterfaceOrientationPortrait()를 사용해야합니다. 그렇지 않으면 이상한 결과가 나오는 경우가 있습니다. – ToddH

0

iOS 앱의 회전 및 방향으로 작업하고있었습니다. self.interfaceOrientation은 viewDidAppear 또는 그 이후에 호출 될 때 항상 정확한 결과를 제공한다는 것을 알게되었습니다.

[UIApplication sharedApplication] .statusBarOrientation은 UIWindow에 직접보기를 추가 할 때 선호해야합니다.

는 도움이되기를 바랍니다.

관련 문제