Swift 你能在“消失”上设置快捷界面视图的动画吗?

Swift 你能在“消失”上设置快捷界面视图的动画吗?,swift,swiftui,Swift,Swiftui,我有一个SwiftUI视图,它有一个自定义动画,在屏幕上运行。我正试图让视图也成为onDisappear的动画,但它马上就消失了 下面的示例再现了这个问题-MyText视图应从左侧滑入,从右侧滑出。id修改器用于确保每次值更改时都渲染一个新视图,我已确认每次确实调用了onAppear和onDisappear,但动画onDisappear从未明显运行。我怎样才能做到这一点 结构测量:视图{ @国家私有变量id=0 var body:一些观点{ VStack{ MyText(文本:“\(id)”).

我有一个SwiftUI
视图
,它有一个自定义动画,在屏幕上运行
。我正试图让视图也成为
onDisappear
的动画,但它马上就消失了

下面的示例再现了这个问题-
MyText
视图应从左侧滑入,从右侧滑出。
id
修改器用于确保每次值更改时都渲染一个新视图,我已确认每次确实调用了
onAppear
onDisappear
,但动画
onDisappear
从未明显运行。我怎样才能做到这一点

结构测量:视图{ @国家私有变量id=0 var body:一些观点{ VStack{ MyText(文本:“\(id)”).id(id) 按钮(“增量”){ self.id+=1 } } } 结构MyText:视图{ @国家私有风险值偏移量:CGFloat=-100 让文本:字符串 var body:一些观点{ 返回文本(文本) .偏移量(x:偏移量) .onAppear(){ 带动画(.easeInOut(持续时间:2)){ self.offset=0 } } .onDisappear(){ 带动画(.easeInOut(持续时间:2)){ 自偏移=100 } } } } }
您可能想要转换,比如


恐怕它无法工作,因为一旦视图被隐藏,就会调用.onDisappear修改器。 然而,这里有一个很好的答案:

干得好!:)然而,关于这个问题,严格地说,这太糟糕了。2021年,SwiftUI仍然无法在本机上提供这一功能。作为后续问题。。。在子视图中使用绑定的好处是什么?这两种方法似乎都有效。
struct Survey: View {
  @State private var id = 0

  var body: some View {
    VStack {
      MyText(text: $id)

      Button("Increment") {
        self.id += 1
      }
    }
  }

  struct MyText: View {
    @Binding var text: Int
    

    var body: some View {
      return Text("\(text)").id(text)
            .frame(maxWidth: .infinity)
            .transition(.slide)
            .animation(.easeInOut(duration: 2))
    }
  }
}