ScrollView弄乱了子元素动画

时间:2020-04-10 01:10:11

标签: swift animation swiftui

有时候,在Swift UI中仍受限的ScrollView中存在任何默认动画,都会导致“复合”动画效果。

ScrollView {
   Text("Hello")
      .animation(
         Animation.interpolatingSpring(stiffness: 200, damping: 3)
      )
}

有时offset被渲染时,会在初始负载上产生更大的弹力效果(相对于ScrollView)。

有没有一种方法可以将弹簧效果隔离到相对于其自身的偏移而不是其绝对偏移。

有趣的是,如果我将ScrollView变成VStack,则不会发生。似乎ScrollView在初始渲染时有一些动画。

1 个答案:

答案 0 :(得分:0)

好吧,这是绝望者的骇客:

struct Hack: View {
  @State var show = false

  public var body: some View {
    ScrollView {
      Text("Hello")
        .animation(
          Animation.interpolatingSpring(stiffness: 200, damping: 3)
        )
        .opacity(show ? 1 : 0) // this is the hack
        .onAppear { self.show.toggle() }
    }
  }
}

这将在初始加载时禁用过分的动画(至少就我而言)。这确实不是一个好答案,也不是了解ScrollView所发生的事情。