SwiftUIの基本を身につけたい方はこちら

フェードアニメーションの画面遷移

フェードアニメーション

extension View {
    @ViewBuilder
    func overlayFadeView<OverlayView: View>(isPresented: Binding<Bool>, @ViewBuilder overlay: () -> OverlayView) -> some View {
        ZStack {
            self
            
            if isPresented.wrappedValue {
                VStack {
                    overlay()
                        .transition(.opacity)
                        .zIndex(1)
                }
                .frame(maxWidth: .infinity, maxHeight: .infinity)
                .background(Color.blue)
            }
        }
    }
}

フェードアニメーション

使い方

var body: some View {
    Text("遷移元画面")
        .overlayFadeView(isPresented: $isPresented) {
            Text("遷移先画面")
        }
}

評価