是否可以在屏幕上更改不对称过渡。例如,文本的不对称过渡为
.transition(.asymmetric(insertion: .move(edge: .trailing) removal: .move(edge: .leading)))
当文本在屏幕上时,过渡需要更改为此
.transition(.asymmetric(insertion: .move(edge: .trailing) removal: .opacity))
我创建了一个测试程序,该程序使用一个@State
变量来更改过渡。问题是在查看removal
insertion
过渡时
要使用下面的代码模拟问题,只需按“动画文本”,然后按“更改动画”,然后按“动画文本”。在第三次按“动画文本”(当文本不在屏幕上)之前,您将看到更改动画无效。
import SwiftUI
// Xcode 11.3
struct ContentView: View {
@State var buttonClick: Bool = false
@State var showText: Bool = false
var body: some View {
VStack(spacing: 10){
if showText == true{
Text("hello")
.transition(.asymmetric(insertion: buttonClick ? .move(edge: .trailing) : .opacity, removal: buttonClick ? .move(edge: .leading) : .opacity))
}
Button (action: { withAnimation { self.buttonClick.toggle() } }) {
Text("change transition")
}
Button (action: { withAnimation { self.showText.toggle() }}) {
Text("Animate text")
}
}
}
}