SwiftUI ينشط التغييرات في الحالة. عندما تتغير قيمة مثل isExpanded داخل withAnimation(.spring)، ينتقل كل عرض يعتمد عليها إلى تخطيطه الجديد باستخدام زنبرك.
في نظام التشغيل iOS 17 والإصدارات الأحدث، فإن أبسط طريقة لوصف الزنبرك هي بقيمتين: المدة، تقريبًا الوقت الذي يستغرقه الاستقرار، والارتداد، مقدار تجاوزه. يعطي الارتداد بمقدار 0 حركة سلسة بدون تجاوز؛ القيم الأعلى تضيف ترتد. توفر Apple أيضًا إعدادات مسبقة: .smooth، و.snappy، و.bouncy.
يستخدم الكود الأقدم .spring(response:dampingFraction:). الاستجابة مشابهة للمدة، وكسر التخميد 1 يعني عدم وجود ارتداد بينما تضيف القيم المنخفضة ارتدادًا. كلا الشكلين يصفان نفس الربيع الجسدي.
الميزة الكبرى للينابيع هي الانقطاع. إذا نقر المستخدم مرة أخرى أو انتهت إيماءة السحب في منتصف الرسوم المتحركة، فسيبدأ الربيع الجديد من الموضع والسرعة الحاليين، لذلك لا توجد قفزة. بالنسبة لإيماءات السحب، قم بتمرير سرعة الإيماءة عندما يحرر المستخدم، بحيث يستمر العنصر في الاتجاه الذي تم رميه فيه.
إذا كان نفس المكون يحتاج أيضًا إلى التشغيل على الويب أو Android، فإن الاحتفاظ بقيم الربيع كرموز حركة مشتركة يساعد. ExodeUI، الذي نصنعه، لديه وقت تشغيل SwiftUI، لذلك يمكن لعنصر واحد مصمم مع نوابضه أن يعمل في SwiftUI وعلى منصات أخرى.