0Pricing
Swift Academy · درس

الرسوم المتحركة الضمنية مقابل الصريحة

استخدموا معدِّل .animation() أو كتلة withAnimation {} لحالات الاستخدام المختلفة.

الرسوم المتحركة الضمنية مقابل الصريحة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

أسلوبا الرسوم المتحركة

يدعم SwiftUI الرسوم المتحركة الضمنية، باستخدام المُعدِّل .animation، والرسوم المتحركة الصريحة، باستخدام إغلاق withAnimation.

struct Demo: View {
  @State private var scale = 1.0
  var body: some View {
    Circle().scaleEffect(scale)
  }
}

الرسوم المتحركة الضمنية باستخدام .animation

يؤدي إرفاق .animation(_:value:) بعرض إلى تحريكه كلما تغيّرت القيمة المرتبطة.

Circle()
  .scaleEffect(scale)
  .animation(.easeInOut(duration: 0.3), value: scale)

تشغيل الرسوم المتحركة الضمنية

يؤدي أي تغيير في الحالة يؤثر في العرض إلى تشغيل الرسوم المتحركة الضمنية المحددة له تلقائيًا.

Button("Grow") {
  scale = 2.0  // .animation fires automatically
}

الرسوم المتحركة الصريحة باستخدام withAnimation

يغلّف withAnimation تغييرًا في الحالة، ويحرّك جميع تغييرات العرض الناتجة في الوقت نفسه.

Button("Animate") {
  withAnimation(.spring()) {
    scale = 2.0
    offset = 50
  }
}

تحريك خصائص متعددة

يكون withAnimation أفضل عندما تريدون تحريك عدة تغييرات في الحالة بشكل متزامن ضمن معاملة واحدة.

withAnimation(.easeOut(duration: 0.5)) {
  isExpanded = true
  rotation = 90
  opacity = 0.5
}

أنواع الرسوم المتحركة

يوفّر Swift رسومًا متحركة من أنواع spring وeaseIn وeaseOut وeaseInOut وlinear، بالإضافة إلى رسوم متحركة بمنحنيات توقيت مخصّصة.

.spring(response: 0.4, dampingFraction: 0.6)
.easeInOut(duration: 0.3)
.linear(duration: 0.5)
.timingCurve(0.2, 0.8, 0.2, 1.0, duration: 0.4)

تعطيل الرسوم المتحركة

مرّروا .animation(.none, value:) أو غلّفوا التغييرات في withAnimation(nil) لتعطيل الرسوم المتحركة بشكل انتقائي.

Circle()
  .scaleEffect(scale)
  .animation(.none, value: scale)  // no animation

أولوية الرسوم المتحركة

تتقدّم withAnimation الصريحة على مُعدِّلات .animation الضمنية في العروض الفرعية.

withAnimation(.linear) {
  value = true  // linear wins over any .animation on subviews
}

الرسوم المتحركة المتكررة

استخدموا .repeatForever أو .repeatCount للرسوم المتحركة الحلقية، مثل تأثيرات النبض.

.animation(
  .easeInOut(duration: 0.8).repeatForever(autoreverses: true),
  value: pulsing
)

التأخير والسرعة

ركّبوا الرسوم المتحركة باستخدام مُعدِّلي .delay و.speed على قيمة الرسوم المتحركة.

.animation(.spring().delay(0.2).speed(1.5), value: flag)

اختيار الرسوم المتحركة الضمنية أو الصريحة

استخدموا الرسوم المتحركة الضمنية لتحريك عرض واحد مرتبط بقيمة واحدة، والصريحة عند تنسيق عدة خصائص أو عروض.

// Implicit: simple, single view
.animation(.easeIn, value: isVisible)
// Explicit: multi-property or cross-view
withAnimation { a = 1; b = 2 }

اختبار سريع

ما الأسلوب الأفضل لتنسيق تحريك خصائص حالة متعددة في الوقت نفسه؟

مراجعة الدرس

تستجيب الرسوم المتحركة الضمنية (.animation(_:value:)) تلقائيًا لتغيّر القيم في عرض واحد. أما الرسوم المتحركة الصريحة (withAnimation {}) فتنسّق عدة تغييرات. ويمكن دمجها مع .delay و.speed و.repeatForever لإنشاء تأثيرات معقدة.

الأسئلة الشائعة

هل درس «الرسوم المتحركة الضمنية مقابل الصريحة» مجاني؟

نعم — نص درس «الرسوم المتحركة الضمنية مقابل الصريحة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «الرسوم المتحركة الضمنية مقابل الصريحة»؟

استخدموا معدِّل .animation() أو كتلة withAnimation {} لحالات الاستخدام المختلفة. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الرسوم المتحركة الضمنية مقابل الصريحة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الرسوم المتحركة الضمنية مقابل الصريحة
  2. ‏matchedGeometryEffect للانتقالات البارزة
  3. ‏AnimatableModifier وAnimatable المخصّصان
  4. ‏TimelineView وCanvas للرسم عالي الأداء
← العودة إلى Swift Academy