 Apple Lover Developer & Artist

영속적인 디자인에 현대의 공감을 채워넣는 공방입니다

 Apple/iOS Dev Challenges

[Challenge] iOS 13 이후의 Scene 톱아보기!

singularis7 2021. 11. 25. 22:48
반응형

Overview

Scene 은 앱의 UI 인스턴스를 동시에 여러개 관리하며 적절한 UI 인스턴스로 resources 을 연결해준다.

UIKit 은 앱의 UI의 각 인스턴스를 UIWindowScene 객체를 통해 관리해준다. 하나의 scene 은 window 와 view controller 를 포함하고 있으며 UI의 한 인스턴스를 보여주기 위해서이다. 각 scene 은 상응하는 UIWindowSceneDelegate 객체를 갖고있으며 UIKit 과 앱 사이에 상호작용을 조직하기 위해 사용할 수 있다. Scene 은 서로 병렬적으로 동작하며 같은 메모리 공간과 앱의 프로세스 공간을 공유한다. 결론적으로 하나의 앱은 여러개의 scene 을 가질 수 있으며 scene delegate 객체는 동시에 활성화된다. 새로운 scene 에 관하여 configuration 을 하려면 UIApplicationDelegate 에서 설정해줘야 한다.


Respond to Scene-Based Life-Cycle Events

만약 당신의 앱이 scene 을 지원한다면 UIKit 은 각 Life-Cycle 이벤트트를 scene 에 전달해준다. scene 은 장치에서 실행중인 앱의 Ui 중 한 인스턴스를 의미한다. 사용자는 앱에서 여러개의 scene 을 생성할 수 있으며 개별적으로 보여주거나 감출 수 있다. 각 scene 은 자신만의 lifecycle이 존재하기 때문에 각 scene 은 서로 다른 실행 순서를 가질 수 있다. 예를 들어 하나의 scene 이 foreground 상태에 있는 동안 다른 scene 들은 background 상태에 있을 수 있다.

Important
Scene 지원은 선택하는 기능이다. 이 지원을 활성화시키기위해 당신의 앱 Info.plist 에 UIApplicationSceneManifest 키를 등록해야 한다. 자세한 사항은 Specifying the Scenes Your App Supports 에 묘사되어있다.

다음의 그림은 scene 간에 상태 전환에 관하여 보여준다. 사용자나 시스템이 당신의 앱에게 새로운 scene 을 요청할 때, UIKit 은 scene 을 생성해서 unattached 상태로 만들어준다. 사용자가 요청한 scene 은 화면에 나타나서 빠르게 foreground 상태로 전환된다. 시스템이 요청한 scene 의 경우 보통 이벤트를 처리하기위해 background 로 이동한다. 예를 들어 시스템은 location 이벤트를 처리하기 위해서 scene을 background 로 실행시킬 수 있다. 사용자가 앱의 UI를 종료한다면, UIKit 은 관련된 scene 을 background 상태로 옮기고 특수한 경우 suspended 상태로 이동시켜준다. UIKit 은 자원을 얻기 위해 어느 때나 background 혹은 suspended scene 을 종료시킬 수 있다. 이 경우 scene 은 unattached 상태로 돌아가게된다.

scene transition 은 다음과 같은 작업을 수행하기위해 사용한다.

반응형