티스토리 뷰
iPhone X용 앱 업데이트 하는 방법을 친절히(?) 안내하고 있습니다.
SafeArea 을 사용하는 이유
iPhoneX 에 포함된 5.8인치 Super Retina 레이아웃이 반드시 전면 Super Retina 디스플레이를 채우는 동시에 콘텐츠와 컨트롤 부분이 올바르게 표시되어야 하며 간단히 탭할 수 있어야 합니다. SafeArea은 앱이 iPhone X의 새로운 규격에 맞게 제대로 동작하는지 확인하는 데 사용합니다.
Storyboard 에서 SafeArea 처리하기
기본적으로 Storyboard
에서 View
을 ViewController
에 삽입하면 safeArea
로 영역 안에 배치가 됩니다.
만약 사용자가 safeArea
가 아닌 전체 화면으로 하고 싶을 때는 safeArea
로 정해진 제약 조건을 superView
로 변경하시면 됩니다.
[Storyboard Constraints]
[Storyboard SafeArea 에서 SuperView 변경 화면]
Source Code에서 SafeArea 영역 값 가져오기
UI을 구성할 때에 SafeArea 영역을 측정하여 상황에 맞게 UI 변경 할 경우가 있습니다. Storyboard 에서는 이벤트에 따른 UI변경이 힘들기에 Source Code 에서 UI 변경 처리를 하는 편입니다. 그렇다면 Source Code에서는 어떻게 SafeArea 값을 알 수 있을까요?
Objective C
if (@available(iOS 11.0, *)) { UIWindow *window = UIApplication.sharedApplication.keyWindow; CGFloat topPadding = window.safeAreaInsets.top; CGFloat bottomPadding = window.safeAreaInsets.bottom; CGFloat LeftPadding = window.safeAreaInsets.left; CGFloat RightPadding = window.safeAreaInsets.right;}
Swift
if #available(iOS 11.0, *) { let window = UIApplication.shared.keyWindow let topPadding = window?.safeAreaInsets.top let bottomPadding = window?.safeAreaInsets.bottom let leftPadding = window?.safeAreaInsets.left let leftPadding = window?.safeAreaInsets.right}
safeAreaInsert
을 활용하면 SafeArea 영역 값을 확인 할 수 있습니다. safeAreaInsert
는 iOS 11 이후버전부터 사용할 수 있으므로 available(iOS 11.0, *)
조건을 필수로 붙게 됩니다.
정리
SafeArea
의 값을 어떻게 알아오는지 알아봤습니다. iPhone의 지원 디바이스가 다양해는 것에 대해 사용자의 입장에서는 좋지만 개발자의 입장에서는 공수가 많이 들어가게 되어 불편한데요. Apple 에서는 개발자의 배려를 위해서 SafeArea
등 다양한 방법으로 최대한 공수 덜 들어갈 수록 배려(?)를 해주는걸 느꼈습니다. 특히 iPhone X 대응하는 법에 대해서 자세히 설명한 사이트를 보며 Apple도 노치 디자인 공개하기 전에 고민하고 공개한 것이 아닌지 생각해보게 되었습니다.
'프로그래밍 > iOS' 카테고리의 다른 글
iOS MVVM 패턴 RxSwift로 적용해보자 (2) | 2018.07.25 |
---|---|
애플 앱스토어 다운로드 배지 받는 방법 (0) | 2018.07.12 |
CocoaPod 에 Library 등록 방법 - Pods Trunk 등록 (1) | 2018.07.04 |
CocoaPod 에 Library 등록 방법 - Local Pod Create (2) | 2018.07.02 |
SandBox 계정 생성 (0) | 2018.06.30 |
- java
- 스코어헬퍼
- 고시문헬퍼
- flutter
- push
- Kotlin
- 임용고시
- missionchina
- swift
- 패턴
- issue
- 미션차이나센터
- 고시문
- 알고리즘
- missioon
- DI
- 코틀린
- view
- 점수판
- IT
- RXjava
- 탁구
- 안드로이드
- MCC
- Android
- Android Studio
- 선교
- IOS
- 디자인패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |