iOS 8 이전에는 supportedInterfaceOrientations 및 shouldAutoRotate 대리자 메서드 하여 앱 방향을 특정 방향으로 강제했습니다. 아래 코드 스 니펫을 사용하여 응용 프로그램을 원하는 방향으로 프로그래밍 방식으로 회전했습니다. 먼저 상태 표시 줄 방향을 변경하고 있습니다. 그런 다음 모달 뷰를 제시하고 즉시 닫으면 뷰가 원하는 방향으로 회전합니다.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
그러나 이것은 iOS 8에서 실패합니다. 또한 사람들이 iOS 8부터는이 접근법을 항상 피해야한다고 제안한 스택 오버플로에 대한 답변을 보았습니다.
좀 더 구체적으로 말하면, 내 응용 프로그램은 범용 유형의 응용 프로그램입니다. 총 3 개의 컨트롤러가 있습니다.
퍼스트 뷰 컨트롤러 -iPad에서는 모든 방향을 지원하고 iPhone에서는 세로 (홈 버튼 아래로) 만 지원해야합니다.
Second View 컨트롤러 -모든 조건에서 가로 만 지원해야합니다.
Third View 컨트롤러 -모든 조건에서 가로 만 지원해야합니다.
페이지 탐색을 위해 탐색 컨트롤러를 사용하고 있습니다. 첫 번째 뷰 컨트롤러에서 버튼 클릭 동작으로 두 번째 뷰 컨트롤러를 스택에 밀어 넣습니다. 따라서 장치 방향에 관계없이 두 번째 뷰 컨트롤러가 도착하면 앱은 가로 방향으로 만 잠 가야합니다.
다음은 내 것입니다 shouldAutorotate
및 supportedInterfaceOrientations
두 번째와 세 번째 뷰 컨트롤러의 방법.
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
iOS 8의 경우 특정 방향으로 뷰 컨트롤러를 잠그는 더 좋은 방법이 있습니까? 도와주세요 !!