iOS 개발 기록

[iOS]Scene, Window, View의 개념 본문

UIKit

[iOS]Scene, Window, View의 개념

택꽁이 2023. 2. 15. 11:20
728x90
📄

iOS의 UIStructure

iOS의 View 계층

UIScreen

  • 기기의 실제 물리적인 스크린.

UIWindowScene

  • 얘가 Scene을 관리하는 객체. 하나 이상의 window를 포함한다.
  • iOS13 이상부터 생긴 SceneDelegate를 보면 UIWindowSceneDelegate 프로토콜을 채택했는데, Scene에 변화가 생길 경우 delegate를 통해 변화를 알린다.

UIWindow

  • 이벤트들을 뷰로 보내주는 객체.
  • UIV

Window와 Scene의 개념

Window

  • UIView의 하위클래스. View를 담는 컨테이너 역할을 한다.
  • View를 묶고, UI의 배경을 제공하고, 이벤트를 처리하는 객체.
  • 화면에 나타나는 View들은 모두 Window로 묶여있다. 보통 하나의 window만 사용하는데 개발자에 따라 여러 윈도우를 만들어 뷰를 추가할 수 있다. (키보드가 올라올 때, alert 등)

Scene

여러 Scene을 가지는 예
  • iOS13 이후 생김.
  • UI 및 컨텐츠의 배경으로 사용되며, windowViewControllerScene의 내부에 포함된다.
  • Scene들은 같은 메모리와 앱 프로세스 공간을 공유하며 서로 동시에 실행된다. 하나의 앱은 여러개의 SceneSceneDelegate를 사용할 수 있다.

AppDelegate와 SceneDelegate

참고

  • UIStructure
[UIScene] UIScene, UIWindowScene, UISceneSession 이란 무엇인가
iOS13부터 멀티 윈도우가 가능해지면서 UI Structure에 UIWindowScene이라는 개념이 등장했습니다. UISceneSession이라는 개념도 함께요..!! 그럼 UIScene, UIWindowScene, UISceneSession에 대해 간단히 살펴보겠습니다 [1] UIScene - 앱 UI의 하나의 instance 또는 복사본을 의미합니다. - 아래와 같은 상황에서는 세개의 scene이 있다 라고 말할 수 있습니다. - 특정한 session과 connection 정보들로 Scene을 만듭니다.
https://eunjin3786.tistory.com/m/164
  • UIWindow
(iOS) UIWindow 에 관하여
개발자 문서를 읽어보면 다음의 내용이 있다. Declaration "앱의 UI와 View의 이벤트를 처리하는 객체에 대한 배경이다." 여기까지만 읽었을때는 감이 안온다. 자세하게 말하면 UIKit의 동작 방식은 View 혼자서만 이루질수 없고, 다른 객체들과 함께 이루진다. 이때 UIWindow 도 일부 참여하게 된다. 그리고 뭔가 UIWindow가 UIView보다 상위클래스일거라는 이미지가 있었는데 반대였다 UIWindow는 UIView의 하위 클래스다.
https://infinitt.tistory.com/m/407
  • Scene
iOS) Scenes 알아보기
Multiple Scenes ⚠ iOS알못의 글이므로 틀린 정보가 있을 수 있습니다. 오늘은 자판기 프로젝트를 하면서 multiple scene을 지원하는 기능을 구현해야했었는데 그 당시 쏟아지는 다른 요구사항들에 밀려(?) 정확히 이해를 하지 못하고 넘어갔던 Scene 개념에 대해 정리해보려한다. Manage multiple instances of your app's UI simultaneously, and direct resources to the appropriate instance of your UI.
https://sihyungyou.github.io/iOS-scenes/
  • AppDelegate, SceneDelegate
[iOS] Window-based VS Scene-Based ( iOS 13 이후 바뀐 AppDelegate, SceneDelegate 기본 구조에 대한 정리 )
모든 View의 최상위 hierarchy에는 window가 있다. UIWindow의 instance이며 UIWindow는 UIView를 상속받아 만들어진 class이다. window는 단 하나만 존재하며 앱이 실행될 때 생성되어 보여진다. ( 단, iOS 13 이후 부터는 iPad에서 여러개의 window가 하나의 앱에서 존재할 수 있다. - 관련 링크 ) 이미지 출처 - View Controller Programming Guide for iOS window는 rootViewController parameter를 통해 기본이 되는 뷰를 보여주고 이 ViewController의 뷰가 window의 유일한 subview이다.
https://woookdev.github.io/programming/Window-based-VS-Scene-Based-(iOS-13-%EC%9D%B4%ED%9B%84-%EB%B0%94%EB%80%90-%EA%B8%B0%EB%B3%B8-%EA%B5%AC%EC%A1%B0%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%A6%AC)/
[iOS] AppDelegate & SceneDelegate
이번 포스팅에서는 AppDelegate 와 iOS 13, Xcode 11 이후 등장한 SceneDelegate에 대해서 다뤄보겠습니다 참고자료 : Understanding Scene Delegate & App Delegate Scene Delegate vs. App Delegate Explained Managing Your App's Life Cycle Xcode 11 이전 버전에서 iOS 어플레이케이션 프로젝트를 생성하면 AppDelegate.swift, ViewController.swfit 그리고 Storyboard 파일이 생성되었습니다.
https://babywalnut.github.io/my-blog/ios/AppDelegate-SceneDelegate/

Uploaded by N2T