动画过渡比例在swiftui中不工作

  • 本文关键字:swiftui 工作 动画 swiftui
  • 更新时间 :
  • 英文 :


我试图在视图中运行以下转换,但不像预期的那样工作。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()视图-一个显示scaleEightImagetrue时,另一个显示scaleEightImagefalse时。

您只需要在scaleEightImagefalse时显示文本:

VStack {
Spacer()
if !scaleEightImage {
Text("HELLO WORLD!")
.foregroundColor(Color.black)
.transition(zoomOutTransition)
}
}

最新更新