3일차 수업을 듣고 새로 알게된 내용과 공부해야할 것들을 정리한 글입니다.
Learned
- 앱 상태의 종류
- Not Running : 앱이 실행되기 전 상태, 아직 메모리에 올라가지 않음
- Active : 앱이 화면에서 실행중인 상태
- Inactive : 앱이 화면에서 실행중이나 어떤 이벤트도 받지 못하는 상태
- Background : 앱이 화면에 보이지 않지만 일부 코드를 실행하고 있는 상태
- Suspend : 앱이 곧 종료될 상태
Active와 Inactive 상태를 묶어서 foreground 상태라고 부른다.
- AppDelegate와 SceneDelegate
- iOS 13 이전까지는 AppDelegate.swift 파일에서 앱의 생명 주기와 UI의 라이프 사이클을 모두 관리했다.
- iOS 13부터 iPadOS가 등장하면서 아이패드에서 멀티 윈도우 기능이 추가됨에따라
새로운 UI 라이프 사이클과 Scene이라는 개념이 등장했고 이를 관리할 SceneDelegate가 생겼다. - 따라서 iOS 13부터 앱의 생명주기(앱의 실행과 종료)는 AppDelegate가 관리하고,
UI 라이프 사이클(앱의 Background, Foreground 상태)은 SceneDelegate가 담당한다. - UIWindow 객체를 통해 뷰 컨트롤러를 화면에 보여주는 기능 역시 SceneDelegate가 담당하지만,
IOS 13 미만의 버전 대응을 위해 AppDelegate에 window 프로퍼티를 추가해줄 수 있다.
단, SceneDelegate에 @available(iOS 13.0, *) 키워드를 입력해주어야 한다. - SceneDelegate에서 Scene이 생성되고 종료될 때마다 AppDelegate에 알려줘서
앱의 실행과 종료를 AppDelegate가 관리할 수 있도록 해준다. - Scene이 필요할때 AppDelegate에서 aplication(configurationForConnecting: ) 메소드가 호출되고,
SceneDeleagate의 scene(willConnectTo:) 메소드가 호출되어 만들어진 scene을 window와 연결한다.
- Dark Mode
- iOS 버전 13부터 생겼고 Semantic Color나 에셋 카탈로그로 다크 모드에 대응할 수 있다.
- 에셋 카탈로그에서 Color Set을 만들어 Any, Light, Dark 각각의 모드에서 보여지는 색을 설정할 수 있다.
(아이콘같은 이미지 역시 Image Set으로 대응할 수 있다.) - info.plist의 Appearance 키 값을 Light로 설정해서 라이트 모드로 고정할 수 있다.
Semantic Color란?
색이 사용되는 목적과 적용되는 UI에 따라 이름에 의미를 부여하고 시스템화 하는 것
ex) Label Color, Link Color, Background Color 등
- 기기 방향(Device Orientation)
- 프로젝트 설정에서 앱이 실행중일때 변할 수 있는 기기의 방향을 설정할 수 있다. (가로, 세로 모드)
- 방향 중 UpSideDown은 아이패드에서만 가능하다.
- 프로젝트 설정에 변경한 내용이 Build Setting에도 올바르게 적용됐는지 확인
- 하나의 프로젝트에 여러 개의 타겟이 존재할 수 있다. (위젯, 커스텀 키보드 등)
- 빌드를 할 수록 용량이 커지므로 빌드 폴더를 자주 비워주자 (Command + Shift + K)
- view에 Tap Gesture Recognizer가 등록된 상태에서 view에 포함된 UIControl 객체를 터치했을때
컨트롤 액션만 호출된다. - Code Snippet으로 자주 사용하는 코드를 등록해 놓고 사용할 수 있다.
Learning
- UIResponder와 UIGestureRecognizer 사이의 이벤트 처리 과정
이상입니다.
'TIL' 카테고리의 다른 글
[Sesac IOS] 6일차 TIL (0) | 2022.07.11 |
---|---|
[Sesac IOS] 5일차 TIL (0) | 2022.07.09 |
[Sesac IOS] 4일차 TIL (0) | 2022.07.07 |
[Sesac IOS] 2일차 TIL (0) | 2022.07.05 |
[Sesac IOS] 1일차 TIL (0) | 2022.07.04 |