SwiftUI中的动画状态更改

sq1bmfud  于 2022-12-26  发布在  Swift
关注(0)|答案(2)|浏览(142)

我目前正在玩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")
            }
        }
    }
}

但是如果我有一个文本字段:

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")
                }
            }
        }
    }
}

我无法找到一种方法来动画化此更改,因为State属性是由TextField更改的,而没有调用withAnimation()。
有没有可能把这个变化动画化?

mlnl4t2r

mlnl4t2r1#

只需添加动画修改器来 Package 按钮

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))
        .animation(Animation.default.speed(1))
      }
    }
  }
5n0oy7gb

5n0oy7gb2#

第一个月
使用文本的所有内容在更改时都将以动画形式显示。

相关问题