UIView.animate: یہ کیا ہے، iOS میں UIView خصوصیات کا اینیمیشن

مصنف: IT Sectr اشاعت: 2026-03-01 مطالعے کا وقت: 8 منٹ

UIView.animate iOS میں UIView خصوصیات کو متحرک کرنے کا بنیادی طریقہ ہے، جو UIKit میں duration، delay اور options کے ساتھ بلاکس کے ذریعے نافذ کیا گیا ہے۔ یہ طریقہ frame، alpha، transform، backgroundColor اور دیگر قابلِ حرکت خصوصیات کو متحرک کرتا ہے۔ یہ مضمون نحو، پیرامیٹرز، عملی مثالیں اور UIKit اینیمیشنز کی داخلی ساخت بیان کرتا ہے۔

اہم نکات

  • UIView.animate — UIView خصوصیات (frame، alpha، transform، backgroundColor) کو متحرک کرنے کا بلاک پر مبنی طریقہ
  • پیرامیٹرز — duration (سیکنڈ)، delay (سیکنڈ)، options (منحنی، تکرار، خودکار الٹ)، completion (بندش)
  • اسپرنگ اینیمیشن — جسمانی اچھال کے ساتھ UIView.animate(withDuration:delay:usingSpringWithDamping:)
  • کیفریم اینیمیشن — نسبتی وقت کے ساتھ کثیر المراحل ترتیبوں کے لیے UIView.animateKeyframes
  • Core Animation — پردے کے پیچھے، UIView.animate CALayer سطح پر CABasicAnimation استعمال کرتا ہے

UIView.animate کیا ہے؟

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۔

پیرامیٹرقسموضاحت
durationTimeIntervalسیکنڈوں میں اینیمیشن کی مدت (Double قسم)
delayTimeIntervalاینیمیشن شروع ہونے سے پہلے تاخیر
optionsUIView.AnimationOptionsبٹ ماسک: curve، repeat، autoreverse، layoutSubviews
animations() -> Voidقابلِ حرکت خصوصیات میں تبدیلیوں والا بلاک
completion(Bool) -> Voidاینیمیشن مکمل ہونے کے بعد بندش

options پیرامیٹر ایک صف کے ذریعے ملایا جاتا ہے: [.curveEaseOut، .repeat، .autoreverse]۔ repeat اور autoreverse کے ساتھ اینیمیشن View کو اس کی ابتدائی حالت میں آہستہ سے لوٹاتی ہے اور غیر معینہ مدت تک دہرائی جاتی ہے۔ محدود تعداد میں تکرار کے لیے، animateKeyframes استعمال کریں۔

UIView.animate کے ذریعے اسپرنگ اینیمیشن

اسپرنگ اینیمیشن ایک جسمانی اسپرنگ اثر شامل کرتی ہے: شے صرف نقطہ A سے B تک نہیں جاتی، بلکہ میرے ہوئے ارتعاش کے ساتھ ہدف سے آگے نکل جاتی ہے۔ پیرامیٹرز: usingSpringWithDamping (میرنے کا عنصر 0-1، جہاں 0 زیادہ سے زیادہ ارتعاش ہے) اور initialSpringVelocity (ابتدائی اسپرنگ رفتار)۔

Apple قدرتی UI اینیمیشنز کے لیے 0.4-0.8 کی حد میں usingSpringWithDamping استعمال کرنے کی سفارش کرتا ہے۔ قدر 0.5 "ربڑ جیسا" محسوس کیے بغیر نمایاں اچھال پیدا کرتی ہے۔ initialSpringVelocity = 1.0 1 pt/سیکنڈ کی رفتار سے مطابقت رکھتا ہے۔ 0 پر، اینیمیشن سکون کی حالت سے شروع ہوتی ہے۔

swift
// اسپرنگ اور کیفریم اینیمیشن کی مثال
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 کے ذریعے اپنا اینیمیشن منحنی رکھ سکتا ہے۔

swift
// پیچیدہ ترتیب کے ساتھ کیفریم اینیمیشن
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
        }
    }
}

داخلی ساخت: Core Animation پردے کے پیچھے

پردے کے پیچھے، 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 کی کن خصوصیات کو متحرک کیا جا سکتا ہے؟

قابلِ حرکت خصوصیات UIView: frame، bounds، center، alpha، transform (CGAffineTransform)، backgroundColor۔ Auto Layout کی پابندیوں میں تبدیلی کے وقت layoutIfNeeded() میں تبدیلیاں بھی متحرک ہوتی ہیں۔ دیگر خصوصیات UIView.animate کے ذریعے متحرک نہیں کی جا سکتیں — ان کے لیے CALayer یا CADisplayLink استعمال کریں۔

UIView.animate اور UIView.animateKeyframes میں کیا فرق ہے؟

UIView.animate موجودہ حالت سے ہدف کی حالت تک ایک اینیمیشن انجام دیتا ہے۔ UIView.animateKeyframes کل مدت کو مختلف نسبتی آغاز اوقات اور مدتوں کے ساتھ کئی مراحل (کیفریم) میں تقسیم کرتا ہے۔ کیفریم کثیر المراحل ترتیبوں کے لیے موزوں ہیں۔

UIView.animate یوزر انٹرفیس کیوں مسدود نہیں کرتا؟

UIView.animate اینیمیشنز رینڈر سرور (backboardd) میں پروسیس ہوتی ہیں — ایک علیحدہ iOS عمل۔ مرکزی دھاگہ صرف خصوصیات کی ابتدائی اور آخری قدریں بھیجتا ہے۔ فریم انٹرپولیشن Core Animation کے ذریعے GPU پر 120 FPS تک کی رفتار سے انجام دی جاتی ہے۔

UIView.animate کو مکمل ہونے سے پہلے کیسے روکیں؟

UIView پر layer.removeAllAnimations() کال کریں — یہ پردے کے پیچھے تخلیق کردہ تمام CAAnimations کو ہٹا دیتا ہے۔ زیادہ درست کنٹرول کے لیے، CATransaction اور CAAnimation.keyPath کے ذریعے اینیمیشن شناخت کنندگان استعمال کریں۔

خلاصہ

  • UIView.animate — duration، delay، options اور completion کے ساتھ UIView خصوصیات کو متحرک کرنے کا بلاک پر مبنی طریقہ
  • اسپرنگ اینیمیشن — جسمانی اچھال کے لیے usingSpringWithDamping + initialSpringVelocity
  • کیفریم اینیمیشن — کثیر المراحل ترتیبوں کے لیے UIView.animateKeyframes addKeyframe کے ساتھ
  • قابلِ حرکت خصوصیات — frame، bounds، center، alpha، transform، backgroundColor
  • Core Animation — پردے کے پیچھے، UIView.animate CALayer کے لیے CABasicAnimation تخلیق کرتا ہے
  • رینڈر سرور — اینیمیشنز مرکزی دھاگے کو مسدود کیے بغیر 120 Hz پر پروسیس ہوتی ہیں
  • SwiftUI — نئے پروجیکٹس کے لیے تجویز کردہ آلہ، iOS 16- تعاون کے لیے UIView.animate

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں