您如何过渡到新视图,类似于在SwiftUI中打开应用程序的方式? [重复]

问题描述 投票:0回答:2

因此,当您在iPhone上打开一个应用程序时,它会从AppIcon过渡到以自然的方式看起来完全不同的视图。我尝试在下面的GIF图片中模拟动画。您将如何在SwiftUI中实现这种效果?

enter image description here

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

我将通过一些示例代码来增强这个问题,这些示例代码说明了我今晚的工作量,但是也许其他人会更快地进行演示。那太好了。

animation view swiftui transition
2个回答
0
投票

您可以使用比例转换来实现。您可以观看此视频:https://www.youtube.com/watch?v=VXJM5qRe8XE&list=PLuoeXyslFTuZRi4q4VT6lZKxYbr7so1Mr&index=48


0
投票

[让您了解动画在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()
    }
} }
© www.soinside.com 2019 - 2024. All rights reserved.