2010-04-22 3 views
8

방위를 변경하기 위해 Nav Controller Stack에서 거의 모든 푸시 또는 팝이 필요한 iPhone 응용 프로그램을 얻는 데 나는 망설입니다.iPhone에서 UIInterfaceOrientation을 강제로 변경하십시오.

기본적으로 첫 번째보기는 세로입니다. 두 번째 가로로 세 번째 세로보기가 다시 나타납니다 (예, 이것이 이상적이지는 않지만이 디자인은 구현 된 것입니다.). 여기에 다양한 조언을 겪은

.... Force portrait orientation on pushing new view to UINavigationViewController
Is there a documented way to set the iPhone orientation?
그러나 총 성공하지 How do I detect a rotation on the iPhone without the device autorotating?

. 링크 된 문서의 3.1.2에 대한 내 독서를 연결하는 설정

위 내 세로보기가 그런 다음

 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 
} 
와보기를 못살게 굴지 경우 해당 뷰가 가로로 회전하여 표시해야 함을 표시 것으로 보인다. 그러면 "깨진"초상화 형태로 나타나고 장치를 돌리면 올바르게 회전합니다.

컨트롤러를 내 초상화보기 (적절한 shouldAutoRotate ...가있는)로 다시 가져 오면 장치가 세로 방향으로 반환 될 때까지 깨진 가로보기가 유지됩니다.

나는 또한 모든 shouldautorotate 메시지를 제거하고 대신보기를 변형하여 회전을 강제 실행하려고 시도했습니다. 이런 종류의 작업과 나는 상태 표시 줄 (실제로 응용 프로그램에 숨겨져 있음)을 이동하여 [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; 키보드가 원하는 방향으로 올바른 방향으로 표시된다는 것을 알았습니다.

이 접근법의 문제점은 상태 표시 줄이 없으면 상태 표시 줄 변환이 이상하고 추악하다는 것입니다. 변경 사항이있을 때마다 페이지가 그림자로 뒤덮입니다.

So. 나는 무엇이 없는가.

1) shouldAutorotateToInterfaceOrientation이 컨트롤러를 밀어 간단히 원하는 방향을 제공해야한다는 생각이 잘못 되었습니까?

2) 키보드가 올바른 방향으로 나타나게하는 또 다른 방법이 있습니까?

3) 문서화되지 않은 API가 (갈 길을 더하십시오 호출 있습니까)

답변

4

당신은 방향 변경을 트리거 [UIViewController shouldAutorotateToInterfaceOrientation:]를 사용해서는 안됩니다! 자동 회전이 허용되는지 시스템에 알려주는 것만 가능합니다. 그래도 허용되는 방향을 지정하려면 업데이트해야합니다.

특정보기가 표시 될 때 방향을 변경하려면 특정 방향을 강제하는 각보기 컨트롤러에 대해 [UIViewController viewWillAppear:] 재정의 방법으로 [UIApplication setStatusBarOrientation:animated:]을 호출해야합니다. 뷰가 스택에 푸시되고있을 때 및 뷰가 스택에서 튀어 나올 때 변경이 발생합니다. 재정의 방법에서 super으로 전화하십시오.

상태 표시 줄의 모양을 변경하는 올바른 장소이기도합니다.

+0

[UIApplication setStatusBarOreintation ....과 [UIApplication sharedApplication] .statusBarOrientation의 차이점이 있는지 확실하지 않습니다. 제가 테스트 할 것입니다. 그렇지 않은 경우 테스트를 거쳐서 문제가됩니다. 상태 표시 줄의 그림자가 돌아 다니고 있습니다.가로보기에서는 처음에는 가로 방향으로보기를 표시하는 변환을 사용합니다. shouldAutorotateToInterfaceOrientation을 사용하여 가로보기를 허용하면 다시 표시되지 않습니까? 어떻게 무시합니까? – Andiih

+0

이 방법은 이제 iOS 9에서 사용되지 않습니다. – fullofsquirrels

관련 문제