SwiftUI:如何在条件视图之间添加过渡?

时间:2020-02-10 06:38:05

标签: ios swift swiftui transition

在我的应用中,我有这样的观点:

import SwiftUI

let defaults = UserDefaults.standard

struct ContentView: View {
    @State var haveSeenIntroduction: Bool = defaults.bool(forKey: "haveSeenIntroduction")

    var body: some View {
        ZStack {
            if self.haveSeenIntroduction {
                DefaultView()
            } else {
                IntroductionView(haveSeenIntroduction: $haveSeenIntroduction)
            }
        }.transition(.scale)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

在“ IntroductionView”中,我有这样的按钮:

Button(action: {
    let generator = UINotificationFeedbackGenerator()
    generator.notificationOccurred(.success)

    let defaults = UserDefaults.standard

    defaults.set(true, forKey: "haveSeenIntroduction")

    withAnimation {
        self.haveSeenIntroduction = true
    }
})

当我按下按钮时,在父视图中使用ZStack时,过渡看起来很麻烦(以前的视图“跳起来”,看起来很可怕),而使用组过渡根本不会发生。如何解决此问题并实现这两个视图之间的过渡而不会出现滞后,跳跃等情况?

1 个答案:

答案 0 :(得分:1)

您应该在视图上设置.transition(.scale),而不是在堆栈上显示过渡