iOS 화면 방향 에 대해 서 말씀 드 리 겠 습 니 다.
그러나 저 는 작업 하 는 프로젝트 에서 이 화면 방향 과 접촉 이 많 습 니 다.우 리 는 인터페이스 가 있 는 SDK 이기 때문에 접속 자 를 연결 시 켜 야 합 니 다.처음에 경험 이 없 었 습 니 다.접속 자 자체 의 화면 방향 이 여러 가지 일 수 있다 는 것 을 감안 하여 우 리 는 직접 올 라 와 서 네 가지 방향 을 지원 합 니 다.그 다음 에 각종 화면 전환 문제 입 니 다.90 도 회전,180 독 회전,270 도 회전 으로 테스트 손 이 부 러 질 것 같 습 니 다.
나중에 필요 가 없다 고 생각 하고 화면 방향 문 제 를 해결 하 는 데 많은 시간 을 낭비 했다 가 나중에 접속 자가 특정한 방향 을 직접 설정 하도록 간소화 했다.
일반적인 응용 은 이렇게 복잡 하 게 할 필요 가 없 으 니 한두 개의 화면 방향 만 지원 하면 된다.저도 화면 방향 과 관련 된 몇 가지 정 리 를 해 보 겠 습 니 다.개발 자 들 에 게 도움 이 되 었 으 면 좋 겠 습 니 다!
시스템 화면 방향 매 거 진
문 서 를 보면 시스템 화면 방향 을 제어 하 는 데 사용 되 는 열 거 는 다음 과 같 습 니 다.
// iOS 6
typedef enum {
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
} UIInterfaceOrientation;
// iOS 6
typedef enum {
UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait),
UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft),
UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight),
UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown),
UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),
UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |
UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown),
UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |
UIInterfaceOrientationMaskLandscapeRight),
} UIInterfaceOrientationMask;
발견 가능:4.567917.iOS 6 및 그 후 버 전에 서 사용 하 는 UIInterfaceOrientationMask 형식 으로 화면 방향 을 제어 합 니 다.이 유형 도 몇 개의 매 거 진 값 을 추가 하여 하나의 매 거 진 값 으로 여러 화면 방향 을 대표 할 수 있 습 니 다
iOS 의 응용 에서 인터페이스의 화면 방향 을 제어 할 수 있 는 여러 가지 방식 이 있 고 전역 적 이 며 UIWindow 의 인터페이스 에 대한 제어 도 있 고 하나의 인터페이스 에 대한 제어 도 있다.
단일 인터페이스 제어
iOS 6 이전
iOS 6 이전에 단일 인터페이스의 화면 방향 제 어 는 UIViewController 클래스 의 이 방법 을 사용 합 니 다.
//
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return ((toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) |
(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft));
}
기본적으로 이 방법 은 인자 가 UIInterfaceOrientationPortrait 일 때 만 값 을 되 돌려 줍 니 다.즉,기본 값 은 세로 화면 만 위로 지원 합 니 다.위의 예 에서 가로 화면 이 오른쪽 과 가로 화면 이 왼쪽 두 방향 으로 지원 하 는 것 을 나타 낸다.iOS 6 및 그 이후 버 전
iOS 6 및 이후 버 전에 서 는 단일 인터페이스의 화면 방향 을 제어 합 니 다.UIViewController 를 사용 하여 iOS 6.0 에 새로 추 가 된 두 가지 방법 을 사용 해 야 합 니 다.
//
- (BOOL)shouldAutorotate
{
return YES;
}
// , UIInterfaceOrientationMask
// UIInterfaceOrientationMask
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
그 중에서-supported InterfaceOrientations 방법 은 아이 패드 에서 기본 값 을 UIInterfaceOrientation MaskAll 로 추출 합 니 다.즉,모든 화면 방향 을 기본 으로 지원 합 니 다.아이 폰 과 아 이 팟 터치 의 기본 값 은 UIInterfaceOrientation MaskAllButUpside Down 으로 세로 화면 을 제외 한 세 방향 을 지원 합 니 다.장치 화면 이 회전 할 때 시스템 은-shouldAutorotate 방법 으로 현재 인터페이스 가 회전 을 지원 하 는 지 확인 합 니 다.-shouldAutorotate 가 YES 로 돌아 갈 때 만-supported InterfaceOrientations 방법 이 호출 되 어 회전 인터페이스 가 필요 한 지 확인 합 니 다.
UIWindow 의 인터페이스 제어(iOS 6 이상 버 전이 유효 합 니 다)
iOS 6 에서 UIApplicationDelegate 프로 토 콜 에 UIWindow 의 화면 방향 을 지정 할 수 있 는 방법 이 추가 되 었 습 니 다.
- (NSUInteger)application:(UIApplication *)application
supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskLandscape;
}
이 방법의 기본 값 은 Info.plist 에 설 정 된 Supported interface orientations 항목 의 값 입 니 다.일반적으로 우 리 는 다른 UIWindow 를 만 들 지 않 기 때문에 이 방법 을 통 해 전체적인 통 제 를 할 수 있 습 니 다.
전역 제어
응용 프로그램 인 Info.plist 파일 에 Supported interface orientations 설정 이 있 습 니 다.전체 화면 방향 을 설정 할 수 있 습 니 다.다음 그림:
이 설정 은 프로젝트 의 Target Summary 인터페이스 에 있 는 Supported interface orientations 설정 과 일치 합 니 다.임의의 쪽 을 수정 하면 다른 쪽 이 동기 화 됩 니 다.
또한 시작 할 때 Info.plist 의 Supported interface orientations 항목 의 첫 번 째 값 을 애니메이션 을 시작 하 는 화면 방향 으로 사용 합 니 다.이 캡 처 된 값 에 따라 첫 번 째 값 은 Portrait(top home button),즉 세로 화면 반대 방향 입 니 다.따라서 이 응용 프로그램 은 시작 할 때 세로 화면 반대 방향 으로 애니메이션 을 시작 하 는 것 을 표시 합 니 다.
다 중 제어 공존 의 규칙
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.