본문 바로가기
프로그래밍/iOS

화면의 가로보기/세로보기 설정 방법

by 백룡화검 2011. 5. 20.
UIViewController 의 shouldAutorotateToInterfaceOrientation 함수에서 가로보기 모드 또는 세로보기 모드를 고정시킬 수가 있다.

UIViewController 의 shouldAutorotateToInterfaceOrientation 함수의 기본 내용은 다음과 같다.

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
위 함수는 기본적으로 주석처리 상태로 작성되는데, 주석처리된 상태로 놔두든 주석을 풀든 기기를 돌리더라도 항상 세로보기 상태로 유지된다.
(기기를 돌리기 위해서는 Home 또는 End 키를 사용한다.)

이 함수의 추석을 풀고 내용을 다음과 같이 수정하면 가로보기 모드로 고정시킬 수가 있다.
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation >= UIInterfaceOrientationLandscapeLeft);
}

Home 또는 End 키를 눌러서 아무기 기기를 돌리더라도 가로보기 모드가 세로보기 모드로 변경되지 않는다.

또한 다음과 같이 수정하면 세로보기 모드(기본모드)로 고정시킬 수가 있다.
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation <= UIInterfaceOrientationPortraitUpsideDown);
}

UIInterfaceOrientation 열거형 변수는 다음과 같은 순서대로 정의되어 있기 때문이다.
typedef enum {
   UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
   UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
   UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeLeft,
   UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeRight
} UIInterfaceOrientation;

기기의 방향을 변경함에 따라서 화면의 보기모드를 변경하기 위해서는 shouldAutorotateToInterfaceOrientation 함수가 항상 YES 를 리턴하도록 변경한 다음
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return YES;
}

willRotateToInterfaceOrientation 함수를 오버라이드하여 UIViewController 하위의 뷰들에 대한 크기 조정 및 위치 조정을 위한 코드를 작성한다.

출처 : http://iwoohaha.tistory.com/145