Primeiro, aqui está um bloco de código que reproduz o problema:
import SwiftUI
struct CustomAnimation: ViewModifier {
@State private var isAnimated: Bool = false
func body(content: Content) -> some View {
content
.phaseAnimator([true, false], trigger: self.isAnimated) { view, phase in
view
.scaleEffect(phase ? 1 : 1.2)
}
.onTapGesture {
self.isAnimated.toggle()
}
}
}
#Preview {
@Previewable @State var isPresented: Bool = true
VStack {
Button {
isPresented = true
} label: {
Text("show sheet")
}
}
.sheet(isPresented: $isPresented) {
VStack {
Spacer()
Text("my animated text")
.modifier(CustomAnimation())
}
}
}
O problema é que o texto animado, colocado na parte inferior da tela com um espaçador, fica instável (e volta ao seu lugar) quando arrasto a planilha para cima, depois que a visualização foi animada pelo menos uma vez.
O problema é visível somente se a visualização animada estiver fixada na parte inferior da tela (por exemplo, com um espaçador) e somente após uma animação.
Tentei depurar com engates de instrumentos, mas sou novo nisso e não entendo muito bem como obter informações.
O problema aparece ao criar em um dispositivo, mas também em pré-visualizações. Percebi que, se eu colocasse o aplicativo em segundo plano, era como se a animação não tivesse acontecido e o problema desaparecia, até eu ativar outra animação.