动画删除SwiftUI视图故障

时间:2020-11-08 07:30:50

标签: ios swift swiftui

我想在底部的视图中滑动,显示一个小便条,然后在几秒钟后滑出。.

滑入效果很好,但是滑出时会出现毛刺:

   if let err = error {
        ErrorView(err)
            .animation(.spring())
            .transition(.move(edge: .bottom))
            .onAppear(perform: errorAppeared)
    }

出现错误时,它可以很好地过渡,但是当没有错误时,它会从视图中弹出,而不是向下滑动或反转。

我正在调用此函数以清除视图:

private func clearError() {
    withAnimation {
        self.error = nil
    }
}

现有的问题都无济于事,我试图在“ onReceive”功能以及我能找到的所有其他答案中做点事情,大多数人说它应该是可行的,或者使用动画或过渡,我相信我已经尝试了大多数组合,但此时仍然很困难

1 个答案:

答案 0 :(得分:1)

我认为动画位于错误的位置-将其置于容器保存状态,并将其链接到依存状态变量,如下所示

<add name="ConsoleDBContext" 
     connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient" />

然后按常规方式激活

VStack {   // << can be as-is, only for condition
   if let err = error {
        ErrorView(err)
            .transition(.move(edge: .bottom))
            .onAppear(perform: errorAppeared)
    }
}
.animation(.spring(), value: error)  // << here !!