ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SwiftUI) App 구조
    SwiftUI 2022. 10. 17. 16:26

    App 구조

    import SwiftUI
    
    @main
    struct MyApp: App {
        var body: some Scene {
            WindowGroup {
                ContentView()
            }
        }
    }

    기존 Swift에서 앱 진입을 담당하는 부분은 Appdelegate 혹은 SceneDelegate.

    @main 어노테이션을 통해 앱 entry point 지정

    SwiftUI 또한 @main annotation을 사용해서 앱의 시작 지점을 알려줌.

    App

    MyApp은 App 프로토콜을 채택하고 있다.

    앱의 구조와 동작을 나타내는 타입이다.

    Swift에서의 AppDelegate 역할

    App 프로토콜은 body 프로퍼티를 가지고 있고 필수로 구현해야 하며,

    body는 Scene 프로토콜을 따른다.

    우리가 Swift에서 알고있던 Scene 개념.

    계산 프로퍼티인 body는 앱이 보여주는 Scene의 컨텐츠들을 반환한다.

    scene은 UI를 정의하는 view의 계층을 포함하고 있다.

    Scene의 종류에는 WindowGroup, Window, DocumentGroup, and Settings 등이 존재.

    위의 코드는 WindowGroup scene을 사용하여 앱이 기본적으로 표시하는 창을 나타낸다.

    애네를 통해 플랫폼을 나눌수 있다고 한다.

    Content view

    SwiftUI에서 scene은 앱이 UI로 나타내는 view 계층을 포함한다.

    view 계층은 view와 다른 view들의 관계를 나타내는 레이아웃을 정의한다.

    위의 그림에선 WindowGroup scene이 contentView가 다른 view를 사용해서 구성하는 view 계층이 포함된다.

    import SwiftUI
    
    struct ContentView: View {
        var body: some View {
            VStack {
                Image(systemName: "globe")
                    .imageScale(.large)
                    .foregroundColor(.accentColor)
                Text("Hello, world!")
            }
            .padding()
        }
    }

    위의 코드는 실제 뷰가 그려지는 View 프로토콜을 채택한 ContentView이다.

    view는 하나 또는 그 이상의 screen 어딘가에 나타나는 시각적인 요소들을 정의하는 역할을 한다.

    말 그대로 ContentView는 view를 그려주는 역할을 하는 View이다.

    우리가 기존에 알고 있는 View의 개념 그대로이다.

    그 ContentView는 body라는 마찬가지로 View를 채택한 연산 프로퍼티를 가지고 있다.

    이 불투명 타입 View를 반환하는 body를 통해 VStack을 return하건 Image를 return하건 아무 상관없이 View를 그려주는 것이다.

     
     

    댓글

Designed by Tistory.