투케이2K

322. (ios/SwiftUI) [SwiftUI] onAppear , onDisappear , onChange 사용해 View 뷰 라이프 사이클 (life cycle) 확인 실시 본문

IOS

322. (ios/SwiftUI) [SwiftUI] onAppear , onDisappear , onChange 사용해 View 뷰 라이프 사이클 (life cycle) 확인 실시

투케이2K 2022. 11. 22. 16:13

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[View : 소스 코드]

import SwiftUI

struct ContentView: View {
    
    
    // MARK: - [클래스 설명]
    /*
    // -----------------------------------------
    1. 앱 View : 앱이 사용자 인터페이스로 표시하는 뷰 계층 구조가 포함
    // -----------------------------------------
    2. 실제 사용자에게 표시되는 화면 구성 실시
    // -----------------------------------------
    */
    
    
    
    
    
    // MARK: - [전역 변수 선언]
    @Environment(\.scenePhase) private var scenePhase
    
    
    
    
    
    // MARK: - [화면에 표시되는 시각적 요소 정의 실시]
    var body: some View {
        VStack { // [화면 보기를 수직으로 정렬]
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")
        }
        .onAppear {
            print("")
            print("====================================")
            print("[ContentView >> onAppear() :: 뷰 화면 표시]")
            print("====================================")
            print("")
        }
        .onDisappear {
            print("")
            print("====================================")
            print("[ContentView >> onDisappear() :: 뷰 종료 상태]")
            print("====================================")
            print("")
        }
        .onChange(of: scenePhase) { (phase) in
            switch phase {
            case .active:
                print("")
                print("====================================")
                print("[ContentView >> onChange() :: 뷰 포그라운드 전환]")
                print("====================================")
                print("")
            case .background:
                print("")
                print("====================================")
                print("[ContentView >> onChange() :: 뷰 백그라운드 전환]")
                print("====================================")
                print("")
            case .inactive:
                print("")
                print("====================================")
                print("[ContentView >> onChange() :: 뷰 상태 변화 감지]")
                print("====================================")
                print("")
            default:
                print("")
                print("====================================")
                print("[ContentView >> onChange() :: 뷰 default 상태]")
                print("====================================")
                print("")
            }
        }
        .padding()
    }
    
    
} // [클래스 종료]






// MARK: - [화면 프리뷰 : 미리보기 화면 지원]
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
 

[결과 출력]

 

 

반응형
Comments