SwiftUI tạo hiệu ứng thay đổi trạng thái. Khi một giá trị như isExpanded thay đổi bên trong withAnimation(.spring), mọi chế độ xem phụ thuộc vào nó sẽ chuyển sang bố cục mới bằng cách sử dụng lò xo.
Trong iOS 17 trở lên, cách đơn giản nhất để mô tả một lò xo là có hai giá trị: thời lượng, khoảng thời gian cần thiết để ổn định và độ nảy, mức độ vượt quá. Độ nảy bằng 0 mang lại chuyển động mượt mà không bị vọt lố; giá trị cao hơn thêm độ nảy. Apple cũng cung cấp các cài đặt trước: .smooth, .snappy và .bouncy.
Mã cũ hơn sử dụng .spring(response:dampingFraction:). Phản hồi tương tự như thời lượng và phần giảm chấn là 1 có nghĩa là không bị trả lại trong khi các giá trị thấp hơn sẽ tăng thêm số lần thoát. Cả hai hình thức đều mô tả cùng một lò xo vật lý.
Ưu điểm lớn của lò xo là sự gián đoạn. Nếu người dùng chạm lại hoặc cử chỉ kéo kết thúc ở giữa hoạt ảnh, lò xo mới sẽ bắt đầu từ vị trí và vận tốc hiện tại, do đó không có bước nhảy. Đối với cử chỉ kéo, hãy truyền vận tốc của cử chỉ khi người dùng thả ra để phần tử tiếp tục đi theo hướng nó được ném.
Nếu thành phần tương tự cũng cần chạy trên web hoặc Android, việc giữ các giá trị mùa xuân dưới dạng mã thông báo chuyển động được chia sẻ sẽ hữu ích. ExodeUI do chúng tôi tạo ra có thời gian chạy SwiftUI, do đó, một thành phần được thiết kế với các lò xo của nó có thể phát trong SwiftUI và trên các nền tảng khác.