我试图在视图中运行以下转换,但不像预期的那样工作。HELLO WORLD文本首先应该是可见的。然后点击按钮时,它应该根据私有变量zoomOutTransition进行缩放。过渡被触发,但我看到第二个文本停留在屏幕上。感谢任何帮助!!
import SwiftUI
public struct SimpleAnimation: View {
@State
private var scaleEightImage = false
private var zoomOutTransition: AnyTransition {
return .asymmetric(
insertion: .identity.animation(nil),
removal: .scale(
scale: 1000, anchor: UnitPoint(x: 0.494, y: 0.05))
.animation(
.easeInOut(duration: 10.0)
.delay(0.1)
)
)
}
public var body: some View {
ZStack {
Color.clear
VStack {
Spacer()
if scaleEightImage {
Text("HELLO WORLD!")
.foregroundColor(Color.black)
.transition(zoomOutTransition)
} else if !scaleEightImage {
Text("HELLO WORLD!")
.foregroundColor(Color.black)
}
}
VStack {
Button {
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
withAnimation {
viewModel.scaleEightImage.toggle()
}
}
} label: {
Text("tappppp me")
.foregroundColor(Color.black)
}
}
}
}
文本留在屏幕上,因为您有2个Text()
视图-一个显示scaleEightImage
为true
时,另一个显示scaleEightImage
为false
时。
您只需要在scaleEightImage
为false
时显示文本:
VStack {
Spacer()
if !scaleEightImage {
Text("HELLO WORLD!")
.foregroundColor(Color.black)
.transition(zoomOutTransition)
}
}