시작 화면 흐름
구현부
Launch Screen
처음 앱 시동시 Launch Screen(실제 구현에선 SplashView로 명명)을 띄운 후, 2초뒤 dismiss 처리하고, 대신 홈 화면(실제 구현에선 ContentView)를 띄웁니다.
struct LaunchScreenView: View {
@State private var isLaunching: Bool = true
var body: some View {
if isLaunching {
SplashView()
.onAppear {
// 2초후 SplashView가 사라짐
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
isLaunching = false
}
}
} else {
ContentView()
}
}
}
Home
유저의 이전 로그인 기록 여부에 따라 Onboarding 화면 표시를 결정합니다.
이전 로그인 기록은 @AppStorage Property Wrapper를 통해 UserDefaults에 기록합니다.
struct ContentView: View {
@EnvironmentObject var appIntent: AppIntent
@AppStorage("isOnBoardingPresented") var isOnBoardingPresented: Bool = true
var body: some View {
MyBitTabView()
.fullScreenCover(isPresented: $isOnBoardingPresented) {
OnboardingView(isOnBoardingPresented: $isOnBoardingPresented)
}
.onReceive(Just(appIntent.state.isLogin), perform: { isLogin in
isOnBoardingPresented = !isLogin
})
}
}
Onboarding
Onboarding 화면에서는 원하는 화면을 구성합니다.
참고 사이트
'TIL' 카테고리의 다른 글
[TIL] Moya 라이브러리 Plugins Logging 도입기 (0) | 2024.06.12 |
---|---|
[TIL] SwiftUI에서 Bottom Sheet 구현기 (0) | 2024.06.10 |
[TIL] Custom Modifier 적용기 (0) | 2024.06.09 |
[TIL] SwiftUI 나머지 영역 차지 하기 (0) | 2024.06.09 |
[TIL] '손상되었기 때문에 열 수 없습니다. 해당 항목을 휴지통으로 이동해야 합니다.' 오류 해결법 (0) | 2024.06.08 |