프로그래밍 방식으로 iPhone 인터페이스 방향을 결정하는 방법은 무엇입니까?
가능한 값 UIDevice.orientation
에는 UIDeviceOrientationFaceUp
및 UIDeviceOrientationFaceDown
. 기기가 평평하다는 것을 아는 것이 유용 할 수 있지만, 이는 평면 모드가 세로 또는 가로 모드의 인터페이스를 표시하는지 여부를 알려주지 않습니다. 장치가 모호한 정보를 반환하는 경우 GUI의 현재 방향을 찾는 방법이 있습니까? 마지막 세로 / 가로 방향을 기억하거나 기본 UIView의 경계 높이와 너비를 확인하기 위해 방향 변경 이벤트를 추적 할 수 있다고 가정합니다. 내가 누락 된 장치 또는 UIView에 속성이 있습니까?
뷰 컨트롤러에서는 간단히 코드를 사용할 수 있습니다.
UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;
UIInterfaceOrientation은 열거 형입니다.
typedef enum {
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeLeft,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeRight
} UIInterfaceOrientation;
세 가지 방법으로 오리엔테이션을 얻을 수 있습니다.
UIInterfaceOrientation orientation = self.interfaceOrientation;
인터페이스의 현재 방향 인 UIInterfaceOrientation을 반환합니다. UIViewController의 속성 이며 UIViewController 클래스에서만 이 속성에 액세스 할 수 있습니다 .UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
응용 프로그램 상태 표시 줄의 현재 방향 인 UIInterfaceOrientation을 반환합니다. 응용 프로그램의 모든 지점 에서 해당 속성에 액세스 할 수 있습니다 . 내 경험에 따르면 이것이 실제 인터페이스 방향을 검색 하는 가장 효과적인 방법 입니다.UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
UIDeviceOrientation , 장치 방향을 반환 합니다 . 응용 프로그램의 모든 지점 에서 해당 속성에 액세스 할 수 있습니다 . 그러나 UIDeviceOrientation이 항상 UIInterfaceOrientation은 아닙니다. 예를 들어 장치가 일반 테이블에 있으면 예기치 않은 값을받을 수 있습니다.
장치가 가로 또는 세로로만 신경 쓰이는 경우 뷰 컨트롤러에 몇 가지 편리한 방법이 있습니다.
UIDeviceOrientationIsLandscape(self.interfaceOrientation)
UIDeviceOrientationIsPortrait(self.interfaceOrientation)
상태 표시 줄 방향 (statusBarOrientation) 은 상태 표시 줄이 숨겨져 있어도 항상 인터페이스 방향을 반환합니다 .
뷰 컨트롤러없이 상태 표시 줄 방향을 사용할 수 있습니다. 장치 방향이 아닌 현재 뷰 방향을 제공합니다.
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
나는 같은 상황을 보았다. 특히이 흐름에서 :
- 컨트롤러 1이로드됩니다. 세로.
- 스택에 다른 컨트롤러 푸시
- 두 번째 컨트롤러에있는 동안 기기 방향을 가로로 회전합니다.
- 장치를 테이블 위에 평평하게 놓은 다음 원래 컨트롤러로 돌아갑니다.
이 시점에서 내가 본 모든 방향 확인은 잘못된 방향 5를 반환하므로 가로 또는 세로 레이아웃을 사용해야하는지 여부를 직접 결정할 수 없습니다. (나는 방향별로 사용자 지정 레이아웃 위치 지정을 수행하고 있으므로 이것은 중요한 정보입니다)
제 경우에는 뷰의 경계 너비 검사가 사물의 실제 상태를 결정하는 데 사용되지만 다른 사람들이 다르게 처리했는지 알고 싶습니다.
다음은 유용 할 수있는 코드입니다.
UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;
NSLog( @" ORIENTATION: %@", UIInterfaceOrientationIsLandscape( orientation ) ? @"LANDSCAPE" : @"PORTRAIT");
'programing' 카테고리의 다른 글
PostgreSQL을 설치할 수 없음 : Windows XP에서 Microsoft VC ++ 런타임 설치 프로그램을 실행하는 동안 오류가 발생했습니다. (0) | 2021.01.16 |
---|---|
MySQL-Entity : 'TableDetails'테이블의 'IsPrimaryKey'열 값이 DBNull입니다. (0) | 2021.01.16 |
Django 관리자 이미지 필드에서 이미지 표시 (0) | 2021.01.16 |
화면 너비와 높이를 얻는 방법 (0) | 2021.01.16 |
nginx로 모든 요청을 index.php에 다시 작성하십시오. (0) | 2021.01.16 |