swift

SwiftUI Splash(스플래시) 화면 구현하기

호리둥절 2023. 5. 17. 14:54

SplashView.swift 생성

[splashView.swift]

import SwiftUI

struct SplashView: View {
    var body: some View {
        ZStack {
            Color.blue
                .edgesIgnoringSafeArea(.all)
            
            VStack {
                Image(systemName: "star.fill")
                    .font(.system(size: 100))
                    .foregroundColor(.white)
                Text("스플래시 화면")
                    .font(.title)
                    .foregroundColor(.white)
            }
        }
    }
}

메인 화면(View)에서 SplashView를 초기 화면으로 사용

[contentview.swift]

struct ContentView: View {
    @State private var showMainView = false
    
    var body: some View {
        ZStack {
            if showMainView {
                // 메인 콘텐츠나 이후의 뷰들을 여기에 작성합니다.
            } else {
                SplashView()
                    .onAppear {
                        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                            withAnimation {
                                showMainView = true
                            }
                        }
                    }
            }
        }
    }
}

SplashView의 onAppear 수식어를 사용하여 스플래시 화면이 나타날 때 애니메이션과 함께 showMainView를 true로 전환합니다. DispatchQueue.main.asyncAfter를 사용하여 0.5초의 지연 시간을 주고, 클로저 내에서 showMainView를 true로 설정합니다. 이로써 스플래시 화면이 일정 시간 동안 표시되고, 그 후에 메인 콘텐츠가 나타납니다.

 

나머지 메인 콘텐츠나 추가적인 뷰들은 if showMainView 블록 안에 작성하면 됩니다. showMainView가 true일 때만 해당 블록이 실행되므로, 스플래시 화면이 완전히 사라진 후에 메인 콘텐츠가 표시됩니다.