【发布时间】:2020-05-27 10:44:58
【问题描述】:
问题很简单:到底如何才能让Text 正确地制作动画?
struct ContentView: View {
@State var foozle: String = ""
var body: some View {
VStack() {
Spacer()
Text(self.foozle)
.frame(maxWidth: .infinity)
.transition(.opacity)
Button(action: {
withAnimation(.easeInOut(duration: 2)) {
self.foozle = "uuuuuuuuu"
}
}) { Text("ugh") }
Spacer()
}.frame(width: 320, height: 240)
}
}
问题:视图坚持做一些愚蠢的动画,其中文本被新文本替换,但被省略号截断,它慢慢地向宽度方向扩展,直到显示整个新文本。
当然,这不是关于不透明度的动画。这不是框架宽度问题,我已经通过绘制边框进行了验证。
这只是 SwiftUI 中另一个我必须处理的愚蠢错误,并祈祷有人修复它吗?
编辑:好的,感谢@Mac3n,我得到了这个灵感,它可以正常工作,即使它有点难看:
Text(self.foozle)
.frame(maxWidth: .infinity)
.opacity(op)
Button(action: {
withAnimation(.easeOut(duration: 0.3)) {
self.op = 0
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
self.foozle += "omo"
withAnimation(.easeIn(duration: 0.3)) {
self.op = 1
}
}
}
}) {
Text("ugh")
}
【问题讨论】: