iOS
[iOS] SceneDelegate 란? (feat. LifeCycle)
Peppo
2022. 5. 11. 19:03
728x90
SceneDelegate란?
iOS13 이후 UI생명주기에 관한 이벤트를 처리하기 위해 사용하는 객체 입니다.
화면에 무엇을 보여줄지 관리하는 역할을 하며, iOS 13부터 window의 개념이 scene으로 대체 되었습니다.
why?
아이패드와 같이 큰 화면의 하나의 앱에서 2개 이상의 화면을 보여주기 위해 Scene 개념이 도입 되었습니다.
SceneDelegate Methods
메소드 (펼쳐보기)
더보기
scene(_: willConnectTo: option:)
- application(_: didFinishLaunchingWithOptions:) 메소드와 유사합니다.
- UISceneSession LifeCycle 에서 가장 처음 불리는 메소드로 첫 content view, 새로운 UIWindow를 생성하고 window의 rootViewController를 설정합니다. 여기서의 window = app이 작동하는 viewport
- 첫 view를 만들때, 과거에 disconnected된 UI를 되돌릴때도 사용합니다.
sceneDidDisconnect(_:)
- scene의 연결이 해제될 때 호출 됩니다. (다시 연결 될 수 있습니다.)
- 필요없는 자원을 돌려주는 역할
- 디스크, 네트워크를 통해 쉽게 불러올 수 있거나 생성이 쉬운 데이터를 돌려줍니다.
- 사용자의 input 같은 재생성 어려운 데이터는 갖고 있게 작업해줘야 합니다.
sceneDidBecomeActive(_:)
- inactive → active
- app switcher에서 해당 앱이 선택될때, (*app switcher: 홈 버튼을 두번 누르거나, 화면 하단 바 (홈 인디케이터)를 위로 올렸을 때 보이는 화면)
- scene이 setup되고 화면에 보여지면서 사용할 준비가 된 상태.
- inactive가 되면서 멈춘 task를 재실행 할 때도 사용.
sceneWillResignActive(_ scene:UIScene)
- active → inActive
- 다른화면으로 전환
- ex) 앱 사용중 전화가 올때, 상단을 쓸어내려 알림 모달을 띄울때, 하단을 쓸어올려 (와이파이, 밝기조절, 블루투스 등 보이는 화면.
sceneWillEnterForeground(_ scene: UIScene)
- background → foreground
- Foreground로 진입할 때 호출 (2가지 경우)
- 앱이 실행되고 active 상태가 될 때
sceneDidEnterBackground(_:)
- foreground → background
- 데이터를 저장, state 정보 저장, 공유된 리소스 돌려주는 작업
iOS 13 이후 AppDelegate → SceneDelegate 메소드 변화
728x90