SwiftUI durum değişikliklerini canlandırır. withAnimation(.spring) içinde isExpanded gibi bir değer değiştiğinde, ona bağlı olan her görünüm bir yay kullanarak yeni düzenine taşınır.
iOS 17 ve sonraki sürümlerde, bir yayı tanımlamanın en basit yolu iki değerdir: süre, yani yerleşmenin kabaca ne kadar sürdüğü ve sıçrama, ne kadar aşıldığı anlamına gelir. 0'lık bir sıçrama, aşım olmadan yumuşak hareket sağlar; daha yüksek değerler sıçramayı artırır. Apple ayrıca ön ayarlar da sağlar: .smooth, .snappy ve .bouncy.
Eski kodda .spring(response:dampingFraction:) kullanılır. Tepki süreye benzer ve 1'lik bir sönümleme oranı sıçrama olmadığı anlamına gelirken daha düşük değerler sıçrama ekler. Her iki form da aynı fiziksel yayı tanımlar.
Yayların en büyük avantajı kesintidir. Kullanıcı animasyonun ortasında tekrar dokunursa veya bir sürükleme hareketi sona ererse, yeni yay geçerli konum ve hızdan başlar, dolayısıyla atlama olmaz. Sürükleme hareketleri için, kullanıcı serbest bıraktığında hareketin hızını iletin, böylece öğe fırlatıldığı yönde devam eder.
Aynı bileşenin web'de veya Android'de de çalıştırılması gerekiyorsa yay değerlerini paylaşılan hareket belirteçleri olarak tutmak yardımcı olur. Yaptığımız ExodeUI, bir SwiftUI çalışma zamanına sahiptir, böylece tasarlanmış bir bileşen, yaylarıyla birlikte SwiftUI'te ve diğer platformlarda oynatılabilir.