iOS8, 새로운 크기의 iPhone
2014.10.23
- 드러나는 현상
- 해상도는 커졌고 (컴포넌트들이 작아짐), 그래도 선명함.
- 키보드가 스크린에 차지하는 비율이 줄어듦.
- 기존 씬을 기기에 맞춰서 확장
- 일부는 레이아웃 깨짐
- 테이블 등 공백이 생김.
- 애플의 정책
- 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 세로 끼리 묶고
- 기기 구분
- 기기 식별 상수 (Idiom)
- 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 는?
- 어찌 쓰라고
- 캔버스 크기와 기기의 크기가 다르다.
- 컴팩트 : 400
- 레귤러 : 600 568
- 그래서
- 미리 보기 활용
- Assistance Editor 상태에서 다양한 기기 상태를 동시에 미리 확인 가능.
- Resizable Simulator를 통해 가로 세로 Size Class 변경하면서 테스트.
- 사이즈별로 요소들을 나타나게 안나타나게 할 수 있다. (installed)
- Size Class 지정 -> 뷰 배치
- 작성 팁
- Any-Any 사이즈로 뷰 배치
- 각 Size Class 별로
- 확장형 뷰
- 상대 제약 조건 주의
- 뷰 그룹
- 뷰를 이용해서 그룹화
- hierarchy
- 아니면 컨테이너 뷰
- 제약 조건도 Oulet 연결 가능
- 연결해서 코드로 변경해도 됨.
이미지
- 이미지 에셋
- 각 상황별 사용하는 이미지 모음
- 런칭 이미지
- 앱 아이콘(아이콘, 스팟라이트, 세팅)
- 이미지 셋(화면 UI)
- png, pdf 사용
- 기기, 버전 별, size class 별 설정
- trait에 맞는 이미지를 자동으로
- 이미지 슬라이싱
- 모서리 - 그대로 유지
- 중앙
- 타일 방식 (tile)
- 늘리기 (Stretch)
UI 관련 변경 사항
- frame, bounds 속성 변경
- AlertView, ActionSheet -> ActivityController
- SplitViewController - iPad 전용 -> 범용
회전
- 회전 - 씬 크기 변화
- 세로 상태
- 가로 상태
- IOS7 : frame은 유지 bounds는 회전 후 크기
- 세로 : 320 * 568
- 가로 : 568 * 320
- iOS8 : frame과 bounds가 모두 회전 후 크기
- 기기 회전 이벤트 API
- 이전 : 회전 이벤트 (deprecated)
- willRotateToInterfaceOrientation
- didRotateToInterfaceOrientation
- iOS8 : Trait의 변화
- willTransitionToTraitCollection
- traitCollectionDidChange
- size class에 의한 회전 판단
Segue
UI 패키지 분리
- 1개 스토리보드 - 팀 작업 불가
- 여러 개의 스토리보드 사용
- 닙 활용
- xib : 개별 씬 단위 작성, 뷰 객체 조각
- storyboard : 전체 씬 작성.