ScrollView中的SwiftUI动画不起作用

时间:2019-10-26 13:28:55

标签: ios swift swiftui ios13

我无法解决这个问题。我有一个简单的动画,效果很好。但是,当我将视图包装到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 个答案:

答案 0 :(得分:1)

我已经注意到了这种行为。问题似乎是显式动画。如果您要使用隐式动画,那么它将起作用:

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错误,或者是我仍然不明白的东西。