0Pricing
Swift Academy · درس

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

حرّك خصائص الطبقات باستخدام CABasicAnimation.

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

طريقتان لتحريك الطبقات

يوفر Core Animation تحريكات ضمنية، تُنفّذ تلقائيًا عند تغيير الخاصية، وتحريكات صريحة، تنشئون فيها كائن تحريك.

ومعرفة الطريقتين وكيفية تفاعلهما أمر أساسي للحصول على حركة سلسة.

التحريكات الضمنية

يؤدي تغيير خاصية قابلة للتحريك في طبقة مستقلة إلى تشغيل تحريك ضمني باستخدام منحنى افتراضي مدته 0.25s، من دون الحاجة إلى كائن تحريك.

let layer = CALayer()
// Later, this animates automatically:
layer.opacity = 0.0

الخصائص القابلة للتحريك

يمكن تحريك العديد من خصائص الطبقة، ومنها: opacity وposition وbounds وbackgroundColor وtransform وcornerRadius وغيرها.

layer.cornerRadius = 20 // animates implicitly
layer.backgroundColor = UIColor.systemGreen.cgColor

الإجراءات وآلية الإجراءات

تُشغّل الإجراءات التحريكات الضمنية. فعند تغيير خاصية، تبحث الطبقة عن CAAction لتنفيذه. ويمكنكم تخصيص هذه الإجراءات أو تعطيلها.

تعطيل التحريكات الضمنية للطبقات المرتبطة بالعروض

تُعطّل التحريكات الضمنية في الطبقات المرتبطة بـ UIView. وتحرّكونها بدلًا من ذلك عبر UIView.animate أو باستخدام تحريكات صريحة.

UIView.animate(withDuration: 0.3) {
    view.alpha = 0
}

CABasicAnimation

يحرّك CABasicAnimation خاصية واحدة بين قيمة fromValue وقيمة toValue. أضيفوه إلى الطبقة باستخدام مسار مفتاح يطابق الخاصية.

let anim = CABasicAnimation(keyPath: "opacity")
anim.fromValue = 1.0
anim.toValue = 0.0
anim.duration = 0.5
layer.add(anim, forKey: "fade")

قيمة العرض مقابل قيمة النموذج

يغيّر التحريك الصريح قيم العرض فقط، أي القيم الظاهرة على الشاشة؛ أما قيمة النموذج الخاصة بالطبقة فتعود إلى حالتها السابقة عند انتهاء التحريك.

وللحفاظ على التغيير، اضبطوا قيمة النموذج أيضًا.

layer.opacity = 0.0 // set model value so it persists
layer.add(anim, forKey: "fade")

تحريكات الإطارات الرئيسية

يحرّك CAKeyframeAnimation عبر قيم متعددة في values خلال keyTimes، أو على طول path، ما يجعله مناسبًا للارتدادات أو للحركة على امتداد المنحنيات.

let move = CAKeyframeAnimation(keyPath: "position")
move.values = [
    NSValue(cgPoint: CGPoint(x: 0, y: 0)),
    NSValue(cgPoint: CGPoint(x: 100, y: 0)),
    NSValue(cgPoint: CGPoint(x: 100, y: 100))
]
move.duration = 1.0
layer.add(move, forKey: "path")

دوال التوقيت

تحكموا في التسارع باستخدام timingFunction: التمهيد، أو التباطؤ، أو الخطي، أو منحنى Bezier تكعيبي مخصص.

anim.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)

التجميع والمعاملات

غلّفوا عدة تغييرات داخل CATransaction لمشاركة المدة والتوقيت، أو لتعطيل التحريكات الضمنية بالكامل.

CATransaction.begin()
CATransaction.setDisableActions(true)
layer.position = CGPoint(x: 200, y: 200)
CATransaction.commit()

مفوضو التحريك والإكمال

اضبطوا CATransaction.setCompletionBlock أو مفوض تحريك لتشغيل التعليمات البرمجية عند انتهاء الحركة، مثل التنظيف أو التسلسل أو تحديث الحالة.

CATransaction.begin()
CATransaction.setCompletionBlock { print("done") }
layer.add(anim, forKey: "fade")
CATransaction.commit()

تحقق سريع: التحريكات

اختبروا فهمكم للتحريكات الضمنية مقابل التحريكات الصريحة.

مراجعة: التحريكات الضمنية والصريحة

تتحرك الطبقات المستقلة ضمنيًا عبر الإجراءات عند تغيير الخصائص القابلة للتحريك، بينما تعطل الطبقات المرتبطة بالعروض ذلك وتستخدم UIView.animate. ويحرّك كل من CABasicAnimation وCAKeyframeAnimation الصريحين قيمة العرض، لذلك يجب تحديث قيمة النموذج لحفظ النتائج.

اضبطوا الحركة باستخدام دوال التوقيت، واجمعوا التغييرات في CATransaction، واستخدموا كتل الإكمال لتنفيذ الأعمال اللاحقة.

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

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

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

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

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

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

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

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

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

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

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

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

  1. أساسيات CALayer
  2. الرسوم المتحركة الضمنية والصريحة
  3. التحويلات والتأثيرات ثلاثية الأبعاد
  4. الرسم المخصص باستخدام Core Graphics
← العودة إلى Swift Academy