Skip to main content
LanguagePortuguês (BR)
Engenharia5 minutos de leituraOutubro de 2026

Como funcionam as animações de primavera em SwiftUI?

Resposta curta

Em SwiftUI você adiciona uma mola com .animation(.spring) ou withAnimation(.spring). Desde o iOS 17 as principais configurações são duração e salto, e existem predefinições: .smooth (sem salto), .snappy (um pouco) e .bouncy (mais). O código mais antigo usa resposta e amortecimentoFraction. As molas SwiftUI mantêm sua velocidade quando uma nova animação as interrompe, o que faz com que os gestos pareçam naturais.

Ponto principal

  • Use withAnimation(.spring) para alterações de estado ou .animation(.spring, value:) em uma visualização
  • iOS 17+: .spring(duration:bounce:) mais predefinições .smooth, .snappy e .bouncy
  • API mais antiga: .spring(response:dampingFraction:blendDuration:)
  • Springs são o estilo de animação padrão do SwiftUI desde iOS 17
  • As molas interrompidas mantêm sua velocidade, então os gestos são transmitidos suavemente

SwiftUI anima mudanças de estado. Quando um valor como isExpanded muda dentro de withAnimation(.spring), cada visualização que depende dele se move para seu novo layout usando uma mola.

No iOS 17 e posterior, a maneira mais simples de descrever uma mola é com dois valores: duração, aproximadamente quanto tempo leva para estabilizar, e salto, quanto ela ultrapassa. Um salto de 0 proporciona um movimento suave sem ultrapassagem; valores mais altos adicionam salto. A Apple também oferece predefinições: .smooth, .snappy e .bouncy.

O código mais antigo usa .spring(response:dampingFraction:). A resposta é semelhante à duração, e uma fração de amortecimento de 1 significa que não há salto, enquanto valores mais baixos adicionam salto. Ambas as formas descrevem a mesma mola física.

A grande vantagem das molas é a interrupção. Se um usuário tocar novamente ou um gesto de arrastar terminar no meio da animação, a nova mola começará a partir da posição e velocidade atuais, portanto não haverá salto. Para gestos de arrastar, passe a velocidade do gesto quando o usuário soltar, para que o elemento continue na direção em que foi lançado.

Se o mesmo componente também precisar ser executado na web ou no Android, manter os valores de primavera como tokens de movimento compartilhados ajuda. O ExodeUI, que fabricamos, tem um tempo de execução SwiftUI, portanto, um componente projetado com suas molas pode funcionar no SwiftUI e em outras plataformas.

Perguntas frequentes

Qual é a animação padrão em SwiftUI?

Desde o iOS 17, a animação padrão é uma mola suave.

Qual é a diferença entre .snappy e .bouncy?

.snappy se estabiliza rapidamente com um pequeno overshoot; .bouncy ultrapassa mais. .smooth não tem overshoot.

Como faço para converter resposta e amortecimentoFraction em duração e salto?

A resposta mapeia aproximadamente a duração. Uma fração de amortecimento de 1 é o salto 0; frações de amortecimento mais baixas significam mais salto.

Como adiciono velocidade a partir de um gesto de arrastar?

Leia a velocidade quando o arrasto termina e use uma mola interpoladora ou as APIs de mola mais recentes que aceitam uma velocidade inicial.

Guias e exemplos relacionados

Ajuste uma mola antes de escrever código

Arraste os controles deslizantes, observe o movimento e copie os valores da mola para SwiftUI, CSS e outras plataformas.

Abra o gerador de mola
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →