我目前正在使用SwiftUI。在SwiftUI中,可以对状态更改进行动画处理,例如:
struct Foo: View {
@State private var show = false
var body: some View {
VStack {
if show {
Text("Foo")
}
Button(action: {
withAnimation {
self.show.toggle()
}
}) {
Text(show ? "Hide" : "Show")
}
}
}
}
但是,例如,如果我有一个TextField:
struct Foo: View {
@State private var text = ""
var body: some View {
VStack {
TextField($text, placeholder: Text("Foo")) {
print("editing ended")
}
if !text.isEmpty {
Button(action: {}) {
Text("Done")
}
}
}
}
}
我无法找到使这一变化动起来的方法,因为TextField更改了State属性,而没有调用withAnimation()。
是否可以对此更改进行动画处理?
答案 0 :(得分:2)
只需添加动画修饰符即可包装按钮
var body: some View {
VStack {
TextField($text, placeholder: Text("Foo")) {
print("editing ended")
}
// if !text.isEmpty {
Button(action: {}) {
Text("Done")
}
.background(text.isEmpty ? Color.red : Color.yellow )
.animation(.basic(duration: 1))
// }
}
}
答案 1 :(得分:0)
{{1}}
所有使用文本的内容都将在更改后显示动画。