TIL

[Sesac IOS] 3일차 TIL

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