对于 iOS 14 和 iOS 13,Swift UI 动画似乎在其父框架中的 View 位置动画方面表现不同。我在下面的代码片段中的目标是仅对按钮文本的大小调整进行动画处理,这应该在点击它时发生. 相反,在 iOS 14 中,由 VStack 中附加视图的切换可见性引起的按钮位移也被动画化。
相同的代码在 iOS 13 (Xcode 11) 和 iOS 14(Xcode 12 beta 6,在 macOS 11 beta 上)产生不同的输出。在 iOS 14 中,如何重现旧行为?
import SwiftUI
import PlaygroundSupport
struct ContentView: View {
@State var toggle = false
var body: some View {
VStack{
if self.toggle {
Rectangle().frame(width: 200, height: 200)
}
Button(action: {
self.toggle.toggle()
}){
Text("Tap me!")
.scaleEffect(self.toggle ? 2 : 1)
.animation(
Animation.easeInOut(duration: 1.5)
)
}
} …Run Code Online (Sandbox Code Playgroud)