gpt4 book ai didi

SwiftUI View 在意想不到的路径上动画

转载 作者:行者123 更新时间:2023-12-04 14:02:46 25 4
gpt4 key购买 nike

我制作了以下 PulsatingView:

struct PulsatingView: View {

@State private var opacity = 0.7
@State private var scale: CGFloat = 0.5

var body: some View {
VStack {
ZStack {
Circle()
.fill(Color.black.opacity(opacity))
.animation(.easeInOut(duration: 2).delay(1.5).repeatForever(autoreverses: false))
.frame(width: 7, height: 7)
.scaleEffect(scale)
.animation(.easeIn(duration: 2.5).delay(1).repeatForever(autoreverses: false))
Circle()
.fill(Color.black)
.frame(width: 7, height: 7)
}
}
.onAppear {
opacity = 0
scale = 5
}
}
}

它产生以下结果:(点击查看动画;它是一个 .gif)

pulsating view screencast

但是,当我将它添加到 View 中时,例如在 VStack 中,会发生这种情况:(单击以查看动画;它是一个 .gif)

pulsating view glitch

我不知道为什么会这样,也不知道该如何解决。我已经尝试添加诸如 .fixedSize(horizo​​ntal: true, vertical: true).frame(width: 50, height: 50) 之类的修饰符,但是没有帮助。

有人知道这是怎么回事吗?

最佳答案

尝试使用具有连接值的动画,例如

Circle()
.fill(Color.black.opacity(opacity))
.animation(.easeInOut(duration: 2).delay(1.5).repeatForever(autoreverses: false), value: opacity) // << here !!
.frame(width: 7, height: 7)
.scaleEffect(scale)
.animation(.easeIn(duration: 2.5).delay(1).repeatForever(autoreverses: false), value: scale) // << here !!

重要提示:如果它是在 NavigationView 中启动的,那么动画状态应该被推迟激活。 https://stackoverflow.com/a/66643096/12299030 中提供了原因和调查详情.

关于SwiftUI View 在意想不到的路径上动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69448390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com