iOS 화면 방향 에 대해 서 말씀 드 리 겠 습 니 다.

6041 단어 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 형식 으로 화면 방향 을 제어 합 니 다.이 유형 도 몇 개의 매 거 진 값 을 추가 하여 하나의 매 거 진 값 으로 여러 화면 방향 을 대표 할 수 있 습 니 다
  • 네 개의 기본 화면 방향(위,아래,왼쪽,오른쪽)에서 UIInterfaceOrientation Mask=(1<화면 방향 을 어떻게 제어 합 니까?
    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),즉 세로 화면 반대 방향 입 니 다.따라서 이 응용 프로그램 은 시작 할 때 세로 화면 반대 방향 으로 애니메이션 을 시작 하 는 것 을 표시 합 니 다.
    다 중 제어 공존 의 규칙
  • 한 화면 이 마지막 으로 지원 하 는 화면 방향 은(전역 제어∩UIWindow 의 인터페이스 제어∩단일 인터페이스 제어)의 교 집합 입 니 다.만약 에 전역 제어 가 모든 화면 방향 을 지원 한다 면 UIWindow 의 인터페이스 제 어 는 가로 화면 을 지원 합 니 다.한 화면 에서 가로 화면 만 지원 한다 면 마지막 화면 은 가로 화면 으로 만 오른쪽으로 표 시 됩 니 다.다른 방향 으로 회전 하 는 것 도 지원 되 지 않 습 니 다
  • 4.567917.상기 세 가지 제어 가 지원 하 는 화면 방향의 마지막 교 집합 이 비어 있 으 면 iOS 5 와 iOS 6 의 처리 가 약간 다 릅 니 다.iOS 6 에 서 는 UIApplication Invalid InterfaceOrientation Exception 의 이상 을 직접 던 진 다음 에 무 너 지기 때문에 이 세 가지 값 의 교 집합 을 비 워 야 합 니 다이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기