Изменение состояния анимации в SwiftUI - PullRequest
1 голос
/ 08 июня 2019

Я сейчас играюсь с 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")
                }
            }
        }
    }
}

Я не могу найти способ анимировать это изменение, поскольку свойство State изменяется TextField без вызова withAnimation ().

Возможно ли оживить это изменение?

1 Ответ

2 голосов
/ 09 июня 2019

Просто добавьте модификатор анимации, чтобы обернуть вашу кнопку

  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))
//      }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...