SwiftUI เคลื่อนไหวการเปลี่ยนแปลงในสถานะ เมื่อค่า เช่น isExpanded เปลี่ยนแปลงภายใน withAnimation(.spring) ทุกมุมมองที่ขึ้นอยู่กับค่านั้นจะย้ายไปยังเค้าโครงใหม่โดยใช้สปริง
ใน iOS 17 และใหม่กว่า วิธีที่ง่ายที่สุดในการอธิบายสปริงคือมีค่าสองค่า ได้แก่ ระยะเวลา ระยะเวลาที่ใช้ในการชำระตัวโดยประมาณ และการเด้งกลับ ค่าที่สปริงเกิน การกระดอนที่ 0 ให้การเคลื่อนไหวที่ราบรื่นโดยไม่มีการเคลื่อนตัวเกิน ค่าที่สูงกว่าจะเพิ่มการตีกลับ Apple ยังมีการตั้งค่าล่วงหน้า: .smooth, .snappy และ .bouncy
รหัสเก่าใช้ .spring(response:dampingFraction:) การตอบสนองจะใกล้เคียงกับระยะเวลา และเศษส่วนการหน่วงเป็น 1 หมายถึงไม่มีการเด้งกลับ ในขณะที่ค่าที่ต่ำกว่าจะเพิ่มการเด้งกลับ ทั้งสองรูปแบบอธิบายสปริงทางกายภาพเดียวกัน
ข้อได้เปรียบที่สำคัญของสปริงคือการหยุดชะงัก หากผู้ใช้แตะอีกครั้งหรือท่าทางลากสิ้นสุดระหว่างการเคลื่อนไหว สปริงใหม่จะเริ่มต้นจากตำแหน่งและความเร็วปัจจุบัน ดังนั้นจึงไม่มีการกระโดด สำหรับท่าทางการลาก ให้ส่งความเร็วของท่าทางเมื่อผู้ใช้ปล่อย เพื่อให้องค์ประกอบดำเนินต่อไปในทิศทางที่มันถูกโยน
หากส่วนประกอบเดียวกันจำเป็นต้องทำงานบนเว็บหรือ Android ด้วย การรักษาค่าสปริงเนื่องจากโทเค็นการเคลื่อนไหวที่ใช้ร่วมกันจะช่วยได้ ExodeUI ซึ่งเราสร้างนั้นมีรันไทม์ SwiftUI ดังนั้นส่วนประกอบหนึ่งที่ได้รับการออกแบบพร้อมสปริงจึงสามารถเล่นใน SwiftUI และบนแพลตฟอร์มอื่นๆ ได้