자동 회전을 조율하기 위해 응용 프로그램의 윈도우는보기 컨트롤러가 관리하는 최상위 하위보기를 찾습니다. 창은이 뷰 컨트롤러에서 shouldAutorotateToInterfaceOrientation:
을 호출하고, 지시 된대로 뷰 컨트롤러의 뷰를 변환합니다.
이 이유 때문에 창 기반 응용 프로그램이 자동으로 out-of-the-box를 실행하지 않습니다. 기본 템플릿에는보기 컨트롤러가 이미 설정되어 있지 않습니다. 자동 회전을 이용하려면 사용자 정의 UIViewController
하위 클래스를 만들고 해당 shouldAutorotateToInterfaceOrientation:
메서드를 적절하게 편집 한 다음 해당 뷰 컨트롤러 뷰를 윈도우의 직접 하위 뷰로 추가해야합니다 (또는 뷰 컨트롤러를 UINavigationController
과 같은 컨테이너에 추가하고 컨테이너 뷰 콘트롤러의 뷰는 윈도우의 서브 뷰로서). 일반적으로 application:didFinishLaunchingWithOptions:
에서 이루어집니다.
사용자가 "뷰 컨트롤러 및/또는 UINavigationController를 기본 창에 추가 할 때도 회전하지 않으며"shouldAutorotateToInterfaceOrientation:
을 구현했으며 여전히 회전하지 않는다고 말합니다. 모든 것을 올바르게 구성한 경우 작동합니다. 이 과정에서 약간의 실수가 있었을 지 모르지만 프로젝트를 보지 않고서는 무엇인지 확실하게 말할 수는 없습니다. 여기에 몇 가지 확인할 수 있습니다
당신이 NIB에서 사용자 정의보기 컨트롤러를 정의한 경우
, 수 있도록 당신이 IB의 신원 경위에 자사의 클래스 이름을 변경하려면 기억해야합니다.
보기 컨트롤러의보기를 창에 직접 추가했는지 확인하고 창과보기 컨트롤러보기 사이에 래퍼 역할을하는 다른보기가 없는지 확인하십시오.
IB의 Window 개체에 하위보기를 추가하지 않으십시오. 하위 뷰를 application:didFinishLaunchingWithOptions:
에 추가해야합니다.
NIB에서 사용자 지정보기 컨트롤러를 정의한 경우 해당보기가 IB의보기 컨트롤러 아래에 중첩되어 표시되는지 확인하십시오. 즉,보기 컨트롤러의 view
콘센트에 다른보기를 연결하지 마십시오.
어둠 속에서 약간의 발사입니다. 이 답변에있는 뭔가가 실수를 찾는 데 도움이되기를 바랍니다. 그렇지 않은 경우에는보기 기반 응용 프로그램을 만들고 기본 구성을 Windows 기반 응용 프로그램과 비교해보십시오. 어쩌면 당신의 실수가 당신에게 뛰어 들게 될 것입니다.
모든 회전이 지원된다는 것을 목표로 설정했는지 기억 했습니까? – msgambel
기기가 회전 잠김 상태입니까? – Raptor
'shouldAutorotateToInterfaceOrientation :'을보기 컨트롤러가 아니라보기로 구현했다는 것을 의미합니까? – cduhn