【发布时间】:2021-02-19 19:33:21
【问题描述】:
我想制作一个像这样的动画:一个带有视图的 ZStack,上面是一个紫色矩形,最初的比例为 0,不透明度为 0,位于屏幕的中心。
当动画被触发时,会发生两个动画:
- 矩形的比例在 0.4 秒内从 0 增加到 1。
- 矩形的不透明度在 0.3 秒内从 0 增加到 1,在 0.1 秒内从 1 增加到 0。
这是我试图这样做:
struct ContentView : View {
@State private var scale: CGFloat = 0
@State private var scaleSeed: CGFloat = 0.1
@State private var counter: Int = 1
@State private var triggerFlashAnimation = false {
didSet {
scale = 0
counter = 1
}
}
var body: some View {
ZStack {
Text("Hello")
if triggerFlashAnimation {
Rectangle()
.background(Color.purple)
.scaleEffect(scale)
.onAppear {
scale += scaleSeed
counter += 1
}
}
}
我认为这会为比例设置动画,但这非常粗糙,因为我无法控制时间。
我记得在 CoreGraphics 时代,您可以为时间和值定义关键帧。
如何使用 SwiftUI 做到这一点。我的意思是为每个参数定义关键帧和值的精确动画?
我四处搜索,一无所获。
【问题讨论】:
-
我认为 SwiftUI 不支持关键帧动画。
标签: swiftui