UIView.animate iOS میں UIView خصوصیات کو متحرک کرنے کا بنیادی طریقہ ہے، جو UIKit میں duration، delay اور options کے ساتھ بلاکس کے ذریعے نافذ کیا گیا ہے۔ یہ طریقہ frame، alpha، transform، backgroundColor اور دیگر قابلِ حرکت خصوصیات کو متحرک کرتا ہے۔ یہ مضمون نحو، پیرامیٹرز، عملی مثالیں اور UIKit اینیمیشنز کی داخلی ساخت بیان کرتا ہے۔
اہم نکات
UIView.animate UIView کلاس کا ایک جامد طریقہ ہے، جو iOS 4 (2010) میں متعارف کرایا گیا۔ یہ UIView کی قابلِ حرکت خصوصیات: frame، bounds، center، alpha، transform، backgroundColor کو متحرک کرنے کے لیے ایک اعلانیہ API فراہم کرتا ہے۔ یہ طریقہ خصوصیات کی تبدیلیوں کے ساتھ ایک بلاک (بندش) قبول کرتا ہے — نظام خود بخود ہر تبدیل شدہ خصوصیت کے لیے CABasicAnimation تخلیق کرتا ہے۔
بلاک نحو نے پرانے beginAnimations/commitAnimations (iOS 2-3) کی جگہ لے لی اور UIKit میں اینیمیشن کا معیار بن گیا۔ UIView.animate اینیمیشنز مرکزی دھاگے پر چلتی ہیں اور یوزر انٹرفیس کو مسدود نہیں کرتیں۔ پہلے سے طے شدہ طور پر، اینیمیشن کی مدت easeInOut منحنی کے ساتھ 0.25 سیکنڈ ہے۔
Apple WWDC 2023 کے مطابق، نئے پروجیکٹس میں تجویز کردہ اینیمیشن طریقہ SwiftUI ہے جس میں .animation() اور .transition() موڈیفائر ہیں، لیکن UIView.animate iOS 16 اور اس سے نیچے کے تعاون کے ساتھ ساتھ پیچیدہ کسٹم ٹرانزیشنز کے لیے اہم آلہ بنا ہوا ہے۔
UIView.animate تین اہم پیرامیٹر فراہم کرتا ہے: duration (سیکنڈوں میں مدت)، delay (شروع ہونے سے پہلے تاخیر)، اور options (UIView.AnimationOptions بٹ ماسکس کا سیٹ)。 Options میں شامل ہیں curve (easeInOut، easeIn، easeOut، linear)، repeat، autoreverse، allowUserInteraction، beginFromCurrentState اور overrideInheritedDuration۔
| پیرامیٹر | قسم | وضاحت |
|---|---|---|
| duration | TimeInterval | سیکنڈوں میں اینیمیشن کی مدت (Double قسم) |
| delay | TimeInterval | اینیمیشن شروع ہونے سے پہلے تاخیر |
| options | UIView.AnimationOptions | بٹ ماسک: curve، repeat، autoreverse، layoutSubviews |
| animations | () -> Void | قابلِ حرکت خصوصیات میں تبدیلیوں والا بلاک |
| completion | (Bool) -> Void | اینیمیشن مکمل ہونے کے بعد بندش |
options پیرامیٹر ایک صف کے ذریعے ملایا جاتا ہے: [.curveEaseOut، .repeat، .autoreverse]۔ repeat اور autoreverse کے ساتھ اینیمیشن View کو اس کی ابتدائی حالت میں آہستہ سے لوٹاتی ہے اور غیر معینہ مدت تک دہرائی جاتی ہے۔ محدود تعداد میں تکرار کے لیے، animateKeyframes استعمال کریں۔
اسپرنگ اینیمیشن ایک جسمانی اسپرنگ اثر شامل کرتی ہے: شے صرف نقطہ A سے B تک نہیں جاتی، بلکہ میرے ہوئے ارتعاش کے ساتھ ہدف سے آگے نکل جاتی ہے۔ پیرامیٹرز: usingSpringWithDamping (میرنے کا عنصر 0-1، جہاں 0 زیادہ سے زیادہ ارتعاش ہے) اور initialSpringVelocity (ابتدائی اسپرنگ رفتار)۔
Apple قدرتی UI اینیمیشنز کے لیے 0.4-0.8 کی حد میں usingSpringWithDamping استعمال کرنے کی سفارش کرتا ہے۔ قدر 0.5 "ربڑ جیسا" محسوس کیے بغیر نمایاں اچھال پیدا کرتی ہے۔ initialSpringVelocity = 1.0 1 pt/سیکنڈ کی رفتار سے مطابقت رکھتا ہے۔ 0 پر، اینیمیشن سکون کی حالت سے شروع ہوتی ہے۔
// اسپرنگ اور کیفریم اینیمیشن کی مثال
import UIKit
class AnimatedView: UIView {
func springBounce() {
// میرنے کے ساتھ اسپرنگ اینیمیشن
UIView.animate(
withDuration: 0.8,
delay: 0,
usingSpringWithDamping: 0.5,
initialSpringVelocity: 1.0,
options: [.allowUserInteraction],
animations: {
self.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
self.alpha = 0.7
},
completion: { _ in
UIView.animate(withDuration: 0.3) {
self.transform = .identity
self.alpha = 1.0
}
}
)
}
func slideIn(from offset: CGFloat) {
self.transform = CGAffineTransform(translationX: offset, y: 0)
self.alpha = 0.0
UIView.animate(
withDuration: 0.6,
delay: 0.1,
options: [.curveEaseOut]
) {
self.transform = .identity
self.alpha = 1.0
}
}
}UIView.animateKeyframes آپ کو ایک اینیمیشن کو کئی مراحل (کیفریم) میں تقسیم کرنے کی اجازت دیتا ہے، ہر ایک کا اپنا نسبتی وقت اور مدت ہوتی ہے۔ addKeyframe(withRelativeStartTime:relativeDuration:) طریقہ کل اینیمیشن مدت کے نسبت 0 سے 1 تک کے وقت کی قدریں قبول کرتا ہے۔
کیفریم اینیمیشنز کثیر المراحل اثرات کے لیے مفید ہیں: بٹن کی نبض (اضافہ → توقف → واپسی)، ترتیب وار عناصر کا ظہور، درمیانی حالتوں کے ساتھ پیچیدہ شکلی تبدیلیاں۔ ہر کیفریم options کے ذریعے اپنا اینیمیشن منحنی رکھ سکتا ہے۔
// پیچیدہ ترتیب کے ساتھ کیفریم اینیمیشن
func complexPulse() {
UIView.animateKeyframes(withDuration: 2.0, delay: 0, options: [.repeat]) {
UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.25) {
self.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
self.alpha = 0.5
}
UIView.addKeyframe(withRelativeStartTime: 0.25, relativeDuration: 0.25) {
self.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
self.alpha = 0.8
}
UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5) {
self.transform = .identity
self.alpha = 1.0
}
}
}
// اندرونی بندشوں کے ساتھ اینیمیشن
func animateCardTransition() {
UIView.animate(withDuration: 0.4, delay: 0, options: [.curveEaseOut]) {
self.transform = CGAffineTransform(scaleX: 0.95, y: 0.95)
} completion: { _ in
UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseIn]) {
self.transform = .identity
}
}
}پردے کے پیچھے، UIView.animate Core Animation (CAAnimation) کے ذریعے ہر UIView کے CALayer کو اینیمیشن سونپتا ہے۔ جب آپ اینیمیشن بلاک کے اندر frame تبدیل کرتے ہیں، نظام متعلقہ پرت کے position اور bounds خصوصیات کے لیے CABasicAnimation تخلیق کرتا ہے۔ اگر alpha تبدیل کیا جائے — پرت کی opacity خصوصیت کے لیے CABasicAnimation۔
Core Animation ایک علیحدہ رینڈر سرور عمل (iOS پر backboardd) استعمال کرتا ہے جو اینیمیشنز کو 120 Hz (ProMotion) پر پروسیس کرتا ہے۔ UIView.animate مرکزی دھاگے کو مسدود نہیں کرتا — خصوصیات کی تبدیلیاں رینڈر سرور کو بھیجی جاتی ہیں، جو ایپلیکیشن کی شمولیت کے بغیر فریموں کو انٹرپولیٹ کرتا ہے۔
Apple کے مطابق، UIView.animate کے ذریعے اینیمیشنز میں 60 FPS پر تبدیل شدہ پرت کے حساب سے ~2-3% CPU اوورہیڈ ہوتا ہے۔ بڑے پیمانے پر اینیمیشنز (ایک ساتھ 20+ اشیاء) کے لیے، CATransaction اور دستی پرت کے انتظام کے استعمال کی سفارش کی جاتی ہے۔
UIKit اینیمیشنز کو ڈیبگ اور تصور کرنے کے لیے، Xcode Debug View Hierarchy استعمال کریں — یہ ہر پرت پر فعال CAAnimations، ان کی مدت، منحنی اور موجودہ حالت دکھاتا ہے۔ Core Animation کی داخلی ساخت کو سمجھنا پیچیدہ اینیمیشنز کے ساتھ کارکردگی کے مسائل سے بچنے اور UIView.animate اور CABasicAnimation کے براہ راست استعمال کے درمیان بہترین طریقہ منتخب کرنے میں مدد کرتا ہے۔
UIKit اینیمیشنز کو ڈیبگ اور تصور کرنے کے لیے، Xcode Debug View Hierarchy استعمال کریں — یہ ہر پرت پر فعال CAAnimations، ان کی مدت، منحنی اور موجودہ حالت دکھاتا ہے۔ Core Animation کی داخلی ساخت کو سمجھنا پیچیدہ اینیمیشنز کے ساتھ کارکردگی کے مسائل سے بچنے اور UIView.animate اور CABasicAnimation کے براہ راست استعمال کے درمیان بہترین طریقہ منتخب کرنے میں مدد کرتا ہے۔
اکثر پوچھے جانے والے سوالات
قابلِ حرکت خصوصیات UIView: frame، bounds، center، alpha، transform (CGAffineTransform)، backgroundColor۔ Auto Layout کی پابندیوں میں تبدیلی کے وقت layoutIfNeeded() میں تبدیلیاں بھی متحرک ہوتی ہیں۔ دیگر خصوصیات UIView.animate کے ذریعے متحرک نہیں کی جا سکتیں — ان کے لیے CALayer یا CADisplayLink استعمال کریں۔
UIView.animate موجودہ حالت سے ہدف کی حالت تک ایک اینیمیشن انجام دیتا ہے۔ UIView.animateKeyframes کل مدت کو مختلف نسبتی آغاز اوقات اور مدتوں کے ساتھ کئی مراحل (کیفریم) میں تقسیم کرتا ہے۔ کیفریم کثیر المراحل ترتیبوں کے لیے موزوں ہیں۔
UIView.animate اینیمیشنز رینڈر سرور (backboardd) میں پروسیس ہوتی ہیں — ایک علیحدہ iOS عمل۔ مرکزی دھاگہ صرف خصوصیات کی ابتدائی اور آخری قدریں بھیجتا ہے۔ فریم انٹرپولیشن Core Animation کے ذریعے GPU پر 120 FPS تک کی رفتار سے انجام دی جاتی ہے۔
UIView پر layer.removeAllAnimations() کال کریں — یہ پردے کے پیچھے تخلیق کردہ تمام CAAnimations کو ہٹا دیتا ہے۔ زیادہ درست کنٹرول کے لیے، CATransaction اور CAAnimation.keyPath کے ذریعے اینیمیشن شناخت کنندگان استعمال کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں