Анимация SwiftUI в ScrollView не работает - PullRequest
2 голосов
/ 26 октября 2019

Просто не могу обдумать это. У меня есть простая анимация, которая отлично работает. Но когда я оборачиваю вид в ScrollView (раскомментируя 2 строки), он больше не анимируется? Кто-нибудь знает?

import SwiftUI

struct ContentView: View {
    @State var offset = CGSize(width: 0, height: 0)

    var body: some View {
//      ScrollView {
            VStack(spacing: 50) {
                Rectangle()
                    .frame(width: 100, height: 100)
                    .offset(self.offset)
                Button(action: {
                    withAnimation {
                        self.offset.width += 66
                    }
                })
                {
                    Text("Animate me")
                }
            }.frame(width: 300)
//      }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

1 Ответ

1 голос
/ 26 октября 2019

Я уже заметил это поведение. Кажется, проблема в явной анимации. Если вы используете неявную анимацию, она работает:

struct ContentView: View {
    @State var offset = CGSize(width: 0, height: 0)

    var body: some View {
      ScrollView {
            VStack(spacing: 50) {
                Rectangle()
                    .frame(width: 100, height: 100)
                    .offset(self.offset)
                    .animation(.linear)
                Button(action: {
                    self.offset.width += 66
                })
                {
                    Text("Animate me")
                }
            }.frame(width: 300)
      }
    }
}

struct ContentView_Previews: PreviewProvider {
  static var previews: some View {
    ContentView()
  }
}

Мне пока не удалось выяснить причину, поэтому рассмотрим это как обходной путь. Это может быть ошибка SwiftUI или что-то, что я до сих пор не могу понять.

...