首页 > 解决方案 > 如何像在 SwiftUI 中打开 App 一样转换到新视图?

问题描述

因此,当您在 iPhone 上打开一个应用程序时,它会从您的 AppIcon 转换为一个看起来完全不同的视图,并且感觉很自然。我尝试在下面的 GIF 图像中模拟动画。你将如何在 SwiftUI 中实现这种效果?

在此处输入图像描述

您可能需要刷新才能看到动画。

我将通过一些示例代码来增强这个问题,说明我今晚已经走了多远,但也许其他人会更早地进行演示。那将是真棒。

标签: animationviewswiftuitransition

解决方案


为了让您了解动画在 SwiftUI 中的工作原理以及如何组合它们,我为您制作了这个小动画,它由两部分组成:

struct SplashScreen: View {

@State private var circleAlpha = 1.0
@State private var sizeCircle: CGFloat = 0
@State private var textAlpha = 1.0

func handleAnimations() {
    runAnimationPart1()
    let deadline: DispatchTime = .now() + 1
    DispatchQueue.main.asyncAfter(deadline: deadline) {
        self.runAnimationPart2()
    }
}

func runAnimationPart1() {
    withAnimation(.easeIn(duration: 1)) {
        textAlpha = 0
    }
}

func runAnimationPart2() {
    withAnimation(.easeIn(duration: 1)) {
        sizeCircle = 1400
    }
}

var body: some View {

    ZStack {

        Text("Your App Icon")
            .font(.largeTitle)
            .foregroundColor(Color.green)
            .opacity(textAlpha)

        Circle()
            .fill(Color.blue)
            .frame(width: sizeCircle, height: sizeCircle,
                   alignment: .leading)
            .opacity(circleAlpha)

    }
    .onAppear() {
        self.handleAnimations()
    }
} }

推荐阅读