어느 개발자의 한적한 공간 살아나가면서 저지른 이야기

iOS8, 새로운 크기의 iPhone

  • 드러나는 현상
    • 해상도는 커졌고 (컴포넌트들이 작아짐), 그래도 선명함.
    • 키보드가 스크린에 차지하는 비율이 줄어듦.
    • 기존 씬을 기기에 맞춰서 확장
    • 일부는 레이아웃 깨짐
    • 테이블 등 공백이 생김.
  • 애플의 정책
    • 2015년 2월 1일부터
    • 64비트 지원
    • iOS8 SDK 빌드
    • Xcode 6 이상
기기 포인트 디자인 해상도(px) 화면 해상도(px)
iPhone 5 320 * 568 640 * 1176 640 * 1176
iPhone 6 375 * 667 750 * 1134 750 * 1134
iPhone 6+ 414 * 736 1242 * 2208 1080 * 1920
  • Adaptive UI - 애플이 제공하는 방법
    • 뷰컨트롤러
    • 스토리보드
    • 오토 레이아웃
    • 다이나믹 텍스트(dynamic text)
  • Size Class
    • iPhone6 가로, 세로
    • iPhone5 가로 세로 -> 6,5 가로끼리 묶고
    • iPhone6+ 가로 세로 -> 6+,6,5 세로 끼리 묶고
      • Regular, Compact 로 규정
  • 기기 구분
    • 기기 식별 상수 (Idiom)
      • iPhone, iPad
    • Display scale
      • 1 - iPhone 3gs
      • 2 - iPhone 4,4s,5,5s,6,iPad
      • 3 - iPhone 6+
    • Horizontal Size, Vertical Size, Interface Idom, display scale 등을 종합한 식별 방법
      • 종전의 폰 기종간의 구별이 아닌,
      • Trait을 사용하는 환경
        • 스크린, 윈도우, 뷰컨트롤러 등
        • 코드 사용
          • self.traitCollection
          • self.view.traitCollection
        • let rats = self.traitCollection
        • if traits.horizontalSizeclass == UIUserInterfaceSizeClass.Compact
        • && traits.verticalSizeclass == UIUserInterfaceSizeClass.Regular
        • { // 가로 상태 }
  • 캔버스와 Size Class
    • 하단 Size 클래스 설정
    • Size에 맞춰서 캔버스 변경
    • Any Size 는?
      • Compact와 Regular 모두 적용.
  • 어찌 쓰라고
    • 캔버스 크기와 기기의 크기가 다르다.
    • 컴팩트 : 400
    • 레귤러 : 600 568
  • 그래서
    • 미리 보기 활용
    • Assistance Editor 상태에서 다양한 기기 상태를 동시에 미리 확인 가능.
    • Resizable Simulator를 통해 가로 세로 Size Class 변경하면서 테스트.
  • 사이즈별로 요소들을 나타나게 안나타나게 할 수 있다. (installed)
    • Size Class 지정 -> 뷰 배치
    • 작성 팁
      • Any-Any 사이즈로 뷰 배치
      • 각 Size Class 별로
        • 뷰 배치 변경
        • 뷰 위치와 요소 변경.
  • 확장형 뷰
    • 씬 크기에 맞게 확장
      • 테이블, 콜렉션 뷰
      • 맵 뷰 등
  • 상대 제약 조건 주의
    • ex) 컴포넌트 간 간격 주는 거
  • 뷰 그룹
    • 뷰를 이용해서 그룹화
    • hierarchy
    • 아니면 컨테이너 뷰
  • 제약 조건도 Oulet 연결 가능
  • 연결해서 코드로 변경해도 됨.
이미지
  • 이미지 에셋
    • 각 상황별 사용하는 이미지 모음
    • 런칭 이미지
    • 앱 아이콘(아이콘, 스팟라이트, 세팅)
    • 이미지 셋(화면 UI)
    • png, pdf 사용
    • 기기, 버전 별, size class 별 설정
    • trait에 맞는 이미지를 자동으로
    • 이미지 슬라이싱
      • 모서리 - 그대로 유지
      • 중앙
        • 타일 방식 (tile)
        • 늘리기 (Stretch)
UI 관련 변경 사항
  • frame, bounds 속성 변경
  • AlertView, ActionSheet -> ActivityController
  • SplitViewController - iPad 전용 -> 범용
회전
  • 회전 - 씬 크기 변화
  • 세로 상태
    • frame과 bounds 크기 동일
  • 가로 상태
    • IOS7 : frame은 유지 bounds는 회전 후 크기
      • 세로 : 320 * 568
      • 가로 : 568 * 320
    • iOS8 : frame과 bounds가 모두 회전 후 크기
      • 둘다 같다
  • 기기 회전 이벤트 API
  • 이전 : 회전 이벤트 (deprecated)
    • willRotateToInterfaceOrientation
    • didRotateToInterfaceOrientation
  • iOS8 : Trait의 변화
    • willTransitionToTraitCollection
    • traitCollectionDidChange
    • size class에 의한 회전 판단
Segue
  • segue 옵션 더생김
UI 패키지 분리
  • 1개 스토리보드 - 팀 작업 불가
  • 여러 개의 스토리보드 사용
  • 닙 활용
    • xib : 개별 씬 단위 작성, 뷰 객체 조각
    • storyboard : 전체 씬 작성.

iOS 개발 #iOS