SwiftUI

SwiftUI - 프로젝트 분석

iosos 2024. 1. 7. 16:15

 

 

UIKit과 SwiftUI

  • 새로운 SwiftUI 기반의 프로젝트를 생성하면 실제로 Xcode는 SwiftUI 뷰들이 앱을 만드는 주체가 되도록 하기 위해 통합 기술을 사용하는 UIKit 기반의 앱을 생성함
  • 따라서 몇몇 파일은 UIKit 기반이며 UI라는 접두사 붙은 모든 클래스는 UIKit 클래스

 

 

 

AppDelegate.swift 파일

  • UIWindow 인스턴스
    • iOS 앱은 이벤트 처리와 UI를 표시하기 위해 앱에 의해 사용될 서로 다른 UIWindow 객체를 관리하는 UIApplication 클래스의 인스턴스 하나를 가짐
    • 사용자에게 보이지 않지만 UI를 구성하는 시각적 객체를 담기 위한 컨테이너 제공

 

  • UIApplication 인스턴스
    • 앱의 생명 주기와 관련된 중요한 이벤트(앱 실행, 알림 수신, 디바이스 메모리 부족, 앱 종료 보류, 앱 내에 새로운 화면 생성 등)에 대한 메서드 호출하여 알림을 주는 델리게이트와 연결

 

  • AppDelegate.swift 파일
    • AppDelegate 프로토콜을 따르는 필수 메서드만 포함하지만, 다른 종류의 앱 생명 주기 이벤트의 알림을 받기 위해 관련 메서드 추가 가능
    • 이러한 메서드는 네트워크 연결 구축 데이터베이스 접근 설정과 같이 앱 초기에 해야 할 초기화 작업을 구현하는 데 유용함
    • didFinishLaunchingWithOptions 메서드 : 초기화 코드 추가할 때 유용 → 앱 실행 후 첫 호출 메서드

 

 

 

SceneDelegate.swift

  • 앱의 UI는 전부 UIWindow 의 자식인 UIWindowScene 객체의 형태인 화면(scene)으로 표시됨
  • 앱 사용자 인터페이스 내에 단일 화면만 나타내는 UIKit 스토리보드 화면과 혼동하지 않는 것이 중요
  • iOS 13에서 다중 윈도우 지원 이후 앱 스위처를 이용하여 UI 복사본 간의 전환 가능
    • 아이패드에서 UI 복사본이 나란히 표시됨
  • 여러 화면에서 동일한 UIApplication 객체를 공유하지만, 다중 윈도우 구성에서의 각 UIWindowScene 인스턴스는 자신만의 화면 델리게이트 인스턴스를 가짐

 

  • SceneDelegate 클래스
    • UIWindowSceneDelegate 프로토콜 구현
    • 현재 세션과 연결되는 새로운 화면 객체, 백그라운드와 포그라운드 간의 화면 전환, 또는 앱에서 연결이 끊긴 화면과 같은 이벤트 처리 메서드 포함
    • 모든 메서드는 앱의 생명주기 동안 초기화와 초기화 해제 작업을 수행하는데 유용함
  • willConnectTo 메서드
    • 가장 중요한 델리게이트 메서드
    • 새로운 화면 객체가 앱에 추가될 때마다 호출 됨
    • ContentView.swift 파일에 선언된 ContentView 뷰의 인스턴스를 생성하고 사용자에게 보이도록 함
    • 이 메서드 내에서 UIKit 아키텍처와 SwiftUI 간의 간격이 해소됨

 

 

 

UIKit 프로젝트 내 SwiftUI 뷰 포함 방법 

  • SwiftUI 뷰는 UIHostingController 인스턴스에 포함되어야 함
  • willConnectTo 델리게이트 메서드 작업 수행 순서
    1. ContentView 인스턴스 생성
    2. 새로운 UIWindow 객체 생성
    3. UIHostingController 인스턴스에 ContentView 객체 포함
    4. UIHostingController를 새롭게 생성된 UIWindow 객체의 최상위 뷰 컨트롤러(root view controller)로 할당
    5. 화면의 현재 UIWindow 인스턴스를 새로운 인스턴스로 치환
    6. 사용자에게 윈도우 표시

 

ContentView.swift 파일

  • SwiftUI View 파일로 앱이 시작할 때 나타나는 첫 화면의 내용을 담음

 

Assets.xcassets

  • 에셋이 포함되며, 이미지, 아이콘, 색상 등 앱에서 사용되는 리소스를 저장하기 위해 사용됨

 

 

Info.plist

  • 정보 프로퍼티 리스트 파일로, 앱을 구성하는 데 사용되는 키 - 값 쌍의 XML 파일
  • ex) 다중 윈도우 지원을 활성화하기 위한 설정 포함됨

 

 

LaunchScreen.storyboard

  • 앱이 실행될 때 사용자에게 표시되는 화면의 사용자 인터페이스 레이아웃을 담는 스토리보드 파일
  • UIKit 스토리보드 화면으로 SwiftUI가 아닌 인터페이스 빌더를 이용하여 설계됨

'SwiftUI' 카테고리의 다른 글

SwiftUI - 스택, 프레임  (1) 2024.01.13
SwiftUI - 커스텀 뷰 생성  (1) 2024.01.10
SwiftUI - SwiftUI 모드로 Xcode 이용  (1) 2024.01.07
SwiftUI - 개요  (0) 2024.01.07
SwiftUI - @Binding  (0) 2023.08.25