CALayer: یہ کیا ہے، کلیدی تصورات اور لیئر رینڈرنگ

مصنف: IT Sectr اشاعت: 2026-06-12 مطالعے کا وقت: 10 منٹ

CALayer iOS میں گرافیکل لیئرز کے لیے بیس کلاس ہے، جو QuartzCore فریم ورک کا حصہ ہے۔ iOS میں ہر UIView سے ایک CALayer منسلک ہوتی ہے جو مواد کی رینڈرنگ، اینیمیشن اور GPU کمپوزیشن کو سنبھالتی ہے۔ Apple QuartzCore Documentation, 2025 کے مطابق، CALayer 40 سے زیادہ اینیمیٹیبل خصوصیات کو سپورٹ کرتی ہے اور براہ راست Metal کے ذریعے کام کرتی ہے۔ ہموار اینیمیشن بنانے اور انٹرفیس کی کارکردگی کو بہتر بنانے کے لیے CALayer کو سمجھنا ضروری ہے۔

اہم نکات

  • CALayer iOS میں بصری نمائندگی کا بنیادی بلاک ہے، راسٹرائزیشن اور کمپوزیشن کا انتظام کرتی ہے۔
  • ہر UIView میں layer پراپرٹی کے ذریعے قابل رسائی ایک لیئر ہوتی ہے — ڈویلپرز UIView کا ذیلی کلاس بنائے بغیر بصری عناصر کو اپنی مرضی کے مطابق بنا سکتے ہیں۔
  • Core Animation خصوصیات کو اینیمیٹ کرنے کے لیے CALayer استعمال کرتی ہے: position, bounds, opacity, transform, backgroundColor۔
  • CALayer کے ذیلی کلاسز — CAShapeLayer, CATextLayer, CAGradientLayer, CAEmitterLayer — مخصوص رینڈرنگ کاموں کو حل کرتے ہیں۔
  • CALayer رینڈرنگ Metal کے ذریعے GPU پر انجام دی جاتی ہے، جو مناسب لیئر کنفیگریشن کے ساتھ 60 FPS کو یقینی بناتی ہے۔

CALayer کیا ہے؟

CALayer QuartzCore فریم ورک کی ایک کلاس ہے جو اسکرین کے مستطیل علاقے کی بٹ میپ تصویر کا انتظام کرتی ہے۔ یہ بصری خصوصیات کو ذخیرہ کرتی ہے: frame, backgroundColor, opacity, shadow, border, transform۔ UIView کے برعکس، CALayer ٹچ ایونٹس کو نہیں سنبھالتی، Auto Layout میں حصہ نہیں لیتی، اور اس کا کوئی view controller لائف سائیکل نہیں ہے۔

آرکیٹیکچر کے لحاظ سے، CALayer Core Animation کے سیاق و سباق میں Model پیٹرن کو نافذ کرتی ہے۔ لیئر بصری خصوصیات کی حالت ذخیرہ کرتی ہے، جبکہ Core Animation اینیمیشن کے دوران حالتوں کے درمیان انٹرپولیشن کا انتظام کرتی ہے۔ یہ علیحدگی drawRect کے ذریعے مواد کو دوبارہ ڈرائے بغیر لیئر کی خصوصیات کو اینیمیٹ کرنے کی اجازت دیتی ہے۔

Apple WWDC 2024 کے مطابق، CALayer کو Metal کے ذریعے کام کرنے کے لیے دوبارہ لکھا گیا تھا۔ جدید رینڈرنگ پائپ لائن میں تین مراحل شامل ہیں: Commit (CPU پر خصوصیات کو اپ ڈیٹ کرنا)، Render (CPU پر GPU کمانڈز بنانا)، اور Composite (GPU پر کمانڈز پر عمل کرنا)۔ CALayer تینوں مراحل میں حصہ لیتی ہے، ہر ایک کے لیے ڈیٹا فراہم کرتی ہے۔

ہر لیئر میں sublayers — چائلڈ لیئرز جو پیرنٹ کے اوپر رینڈر ہوتی ہیں — شامل ہو سکتی ہیں۔ لیئر کا درجہ بندی UIView کے درجہ بندی کی عکاسی کرتی ہے لیکن اس سے آزادانہ طور پر موجود رہ سکتی ہے۔ ڈویلپرز CALayer() کے ذریعے UIView سے آزادانہ طور پر لیئرز بنا سکتے ہیں اور addSublayer کے ذریعے انہیں درجہ بندی میں شامل کر سکتے ہیں۔

CALayer اور UIView کے درمیان فرق

UIView CALayer کے گرد ایک ریپر ہے جو شامل کرتا ہے: UIResponder کے ذریعے ٹچ ہینڈلنگ، Auto Layout میں شرکت، storyboard میں نمائندگی، اور UIViewController کے ساتھ انضمام۔ CALayer ایک ہلکی پھلکی آبجیکٹ ہے جو خالصتاً بصری عناصر کے لیے UIView کے بغیر استعمال کی جا سکتی ہے۔

عملی طور پر، اس کا مطلب ہے کہ اگر کسی عنصر کو ٹچ ہینڈلنگ یا لے آؤٹ کی ضرورت نہیں ہے، تو اسے CALayer کے طور پر لاگو کیا جا سکتا ہے۔ مثال کے طور پر، پس منظر کی اینیمیشن، لوڈنگ انڈیکیٹر، آرائشی عناصر — یہ سب UIView کے اوور ہیڈ سے بچتے ہوئے CALayer کے ذریعے زیادہ مؤثر طریقے سے لاگو ہوتے ہیں۔

CALayer کی اہم خصوصیات

بنیادی خصوصیات میں فریم، پوزیشننگ، ڈسپلے اور بصری اثرات شامل ہیں۔ frame پیرنٹ کوآرڈینیٹ میں لیئر کے مستطیل علاقے کی وضاحت کرتا ہے، bounds اندرونی کوآرڈینیٹ کی وضاحت کرتا ہے، اور position لیئر کے مرکز کی وضاحت کرتی ہے۔ position کی تبدیلی ڈیفالٹ طور پر امپلسٹ اینیمیشن کے ذریعے اینیمیٹ ہوتی ہے۔

  • backgroundColor — لیئر کا پس منظر کا رنگ (CGColor)۔ opaque = true کے ساتھ مبہم رنگ سیٹ کرنا الفا بلینڈنگ کو ختم کرتا ہے۔
  • cornerRadius — کونوں کو گول کرنا۔ اضافی رینڈرنگ پاسز کے بغیر ہارڈویئر پروسیسڈ۔
  • borderWidth اور borderColor — لیئر بارڈر۔ GPU پر رینڈر ہوتا ہے، drawRect کی ضرورت نہیں۔
  • shadowOffset, shadowRadius, shadowOpacity, shadowPath — سایہ۔ واضح shadowPath رینڈرنگ کو نمایاں طور پر تیز کرتا ہے۔
  • opacity — لیئر کی شفافیت 0.0 سے 1.0 تک۔ drawRect کو کال کیے بغیر اینیمیٹ ہوتی ہے۔
  • transform — 2D اور 3D تبدیلیوں کے لیے CATransform3D۔ پرسپیکٹیو تحریف کو سپورٹ کرتا ہے۔

contents پراپرٹی براہ راست بٹ میپ مواد سیٹ کرنے کی اجازت دیتی ہے — CGImage یا CIImage کے ذریعے۔ یہ drawRect کے ذریعے ڈرائنگ کا ایک متبادل ہے: اگر تصویر پہلے سے تیار ہے، تو اسے contents میں منتقل کیا جا سکتا ہے، اور Core Animation اسے اضافی پروسیسنگ کے بغیر رینڈر کرے گا۔

اینیمیشن کے لیے CABasicAnimation, CAKeyframeAnimation اور CATransition استعمال ہوتے ہیں۔ یہ تمام کلاسیں CALayer کی پراپرٹی کلیدی پاتھ کے ذریعے کام کرتی ہیں، جو position سے transform.rotation.z تک تقریباً کسی بھی صفت کو اینیمیٹ کرنے کی اجازت دیتی ہیں۔

CALayer کے ذیلی کلاسز اور ان کا مقصد

Apple کئی خصوصی CALayer ذیلی کلاسز فراہم کرتا ہے، ہر ایک مخصوص کام کو حل کرتا ہے۔ بنیادی CALayer کے بجائے مناسب ذیلی کلاس کا انتخاب ہارڈویئر ایکسلریشن کے ذریعے نمایاں کارکردگی میں بہتری لا سکتا ہے۔

  • CAShapeLayer — GPU پر ویکٹر شکلیں (CGPath) رینڈر کرتا ہے۔ علیحدہ بفر کی ضرورت نہیں — شکل پیرنٹ لیئر کمپوزیشن کے حصے کے طور پر رینڈر ہوتی ہے۔
  • CATextLayer — سب پکسل اینٹی الیاسنگ کے ساتھ ٹیکسٹ رینڈرنگ۔ گلائف کو کیش کرتا ہے، بار بار ٹیکسٹ ڈسپلے کو تیز کرتا ہے۔
  • CAGradientLayer — لکیری اور شعاعی گریڈینٹ۔ انٹرمیڈیٹ امیجز بنائے بغیر ہارڈویئر رینڈرنگ۔
  • CAEmitterLayer — GPU پر پارٹیکل سسٹم۔ ہر ذرہ CPU کی شرکت کے بغیر علیحدہ عنصر کے طور پر رینڈر ہوتا ہے۔
  • CAReplicatorLayer — پوزیشن، رنگ اور وقت میں کنفیگر ایبل آفسیٹس کے ساتھ چائلڈ لیئر کاپیوں کی خودکار تخلیق۔
  • CATiledLayer — ٹائلز کے ذریعے بڑی تصاویر کی رینڈرنگ۔ صرف نظر آنے والے حصوں کو لوڈ اور ڈسپلے کرتا ہے۔

CAReplicatorLayer کوڈ کی نقل کے بغیر بار بار پیٹرن بنانے کے لیے خاص طور پر مفید ہے۔ مثال کے طور پر، 10 ڈاٹس والا لوڈنگ انڈیکیٹر instanceCount = 10 اور اینیمیشن ٹائم آفسیٹ instanceDelay کے ساتھ ایک CAReplicatorLayer سے لاگو کیا جاتا ہے۔

CALayer رینڈرنگ اور کمپوزیشن

CALayer رینڈرنگ تین مراحل میں آگے بڑھتی ہے۔ Commit — جب لیئر کی پراپرٹی تبدیل ہوتی ہے، CPU پر تبدیلیوں کا ایک بیچ بنتا ہے۔ Render — Core Animation لیئر کی خصوصیات کی بنیاد پر CPU پر Metal کمانڈز بناتا ہے۔ Composite — GPU کمانڈز پر عمل کرتا ہے اور فریم کو اسکرین پر آؤٹ پٹ کرتا ہے۔ پورا عمل ڈسپلے ریفریش ریٹ کے ساتھ ہم آہنگ ہوتا ہے۔

متعدد لیئرز کی کمپوزیشن کے دوران، GPU شفافیت، ماسک اور بلینڈنگ موڈز کو مدنظر رکھتے ہوئے انہیں حتمی تصویر میں ضم کرتا ہے۔ اگر کسی لیئر میں opaque = true ہے، تو Core Animation کمپوزیشن کو بہتر بناتا ہے: الفا بلینڈنگ کی بجائے سادہ پکسل تبدیل کیا جاتا ہے، جو نمایاں طور پر تیز ہے۔

Apple Performance Guidelines کے مطابق، CALayer رینڈرنگ کو سست کرنے والے اہم عوامل ہیں: پیچیدہ sublayer درجہ بندی (اسکرین پر 30 سے زیادہ لیئرز)، ماسک کا استعمال (mask پراپرٹی)، shadowPath کے بغیر خودکار سایہ کا حساب، اور متحرک لیئرز کے لیے shouldRasterize کا ضرورت سے زیادہ استعمال۔

XCode میں Core Animation Instrument ہر لیئر کے رینڈرنگ وقت، آف اسکرین بفرز کی تعداد اور drawRect کال کی فریکوئنسی کی نگرانی کرنے کی اجازت دیتا ہے۔ 60 FPS کے لیے بہترین رینڈرنگ وقت CPU پر 8 ms اور GPU پر 8 ms سے زیادہ نہیں ہے۔

آف اسکرین رینڈرنگ اور اس کا اثر

آف اسکرین رینڈرنگ — اسکرین پر ڈسپلے کرنے سے پہلے کسی لیئر کو انٹرمیڈیٹ بفر میں رینڈر کرنا۔ مواد کے ساتھ cornerRadius + masksToBounds، گروپ opacity، ماسک اور shouldRasterize استعمال کرنے پر ہوتی ہے۔ ہر آف اسکرین پاس 2–5 ms لیتا ہے، لہٰذا ضرورت سے زیادہ آف اسکرین رینڈرنگ کارکردگی کے لیے اہم ہے۔

آف اسکرین رینڈرنگ کی تشخیص کے لیے Core Animation Instrument میں Color Offscreen-Rendered ٹول استعمال کریں۔ پیلے رنگ کی لیئرز — آف اسکرین، نیلی — براہ راست اسکرین رینڈرنگ۔ آف اسکرین پاسز کو کم سے کم کرنا iOS میں ایک اہم اصلاحی تکنیک ہے۔

کوڈ کی مثالیں: Swift میں CALayer کے ساتھ کام کرنا

پہلی مثال سایہ بنانے، کونوں کو گول کرنے اور بارڈر کے ساتھ بنیادی CALayer سیٹ اپ کو ظاہر کرتی ہے۔ رینڈرنگ کو تیز کرنے کے لیے shadowPath واضح طور پر مخصوص کیا گیا ہے:

swift
import UIKit

func configureLayer(_ view: UIView) {
    let layer = view.layer
    layer.cornerRadius = 16
    layer.borderWidth = 2
    layer.borderColor = UIColor.systemBlue.cgColor
    layer.backgroundColor = UIColor.white.cgColor

    layer.shadowColor = UIColor.black.cgColor
    layer.shadowOpacity = 0.2
    layer.shadowOffset = CGSize(width: 0, height: 4)
    layer.shadowRadius = 8
    layer.shadowPath = UIBezierPath(
        roundedRect: view.bounds,
        cornerRadius: layer.cornerRadius
    ).cgPath
}

دوسری مثال پرسپیکٹیو 3D تبدیلی کے ساتھ CABasicAnimation کے ذریعے transform اینیمیشن دکھاتی ہے۔ Y محور گردش اینیمیشن کارڈ پلٹنے کا اثر پیدا کرتی ہے:

swift
let flipAnimation = CABasicAnimation(keyPath: "transform")
var transform = CATransform3DIdentity
transform.m34 = -1.0 / 500.0
transform = CATransform3DRotate(transform, .pi, 0, 1, 0)
flipAnimation.toValue = NSValue(caTransform3D: transform)
flipAnimation.duration = 0.8
flipAnimation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
cardLayer.add(flipAnimation, forKey: "flip")

تیسری مثال پس منظر کا گریڈینٹ بنانے کے لیے CAGradientLayer کے استعمال کو ظاہر کرتی ہے۔ گریڈینٹ GPU پر رینڈر ہوتا ہے اور سائز تبدیل کرنے پر اضافی وسائل کی ضرورت نہیں ہوتی:

swift
func addGradient(to view: UIView, colors: [UIColor]) {
    let gradient = CAGradientLayer()
    gradient.colors = colors.map { $0.cgColor }
    gradient.locations = [0.0, 0.5, 1.0]
    gradient.startPoint = CGPoint(x: 0.0, y: 0.0)
    gradient.endPoint = CGPoint(x: 1.0, y: 1.0)
    gradient.frame = view.bounds
    view.layer.insertSublayer(gradient, at: 0)
}

اکثر پوچھے گئے سوالات

CALayer UIView سے کیسے مختلف ہے؟

UIView CALayer کے گرد ایک ریپر ہے جو ٹچ ہینڈلنگ، Auto Layout اور UIViewController انضمام شامل کرتا ہے۔ CALayer صرف بصری پیشکش اور اینیمیشن کے ساتھ کام کرتی ہے، جو اسے خالصتاً گرافیکل کاموں کے لیے ہلکا اور زیادہ موثر بناتی ہے۔

کون سی CALayer خصوصیات اضافی کوڈ کے بغیر اینیمیٹ ہوتی ہیں؟

position, bounds, frame, opacity, backgroundColor, cornerRadius, transform, shadowOffset, shadowRadius, borderWidth اور borderColor سمیت 40 سے زیادہ خصوصیات۔ UIView.animate اینیمیشن بلاک کے اندر پراپرٹی تبدیل کرنے پر اینیمیشن خود بخود شروع ہو جاتی ہے۔

CALayer سایہ رینڈرنگ کو کیسے تیز کیا جائے؟

shadowPath سیٹ کریں — UIBezierPath کے طور پر ایک واضح سایہ کا خاکہ۔ shadowPath کے بغیر، Core Animation سایہ کی شکل کا حساب لگانے کے لیے مواد کے الفا چینل کا تجزیہ کرتا ہے، جس کے لیے اضافی پاس کی ضرورت ہوتی ہے۔ shadowPath کے ساتھ، سایہ مواد کے تجزیہ کے بغیر ایک سادہ ہندسی شکل کے طور پر رینڈر ہوتا ہے۔

CALayer میں امپلسٹ اینیمیشن کیا ہے؟

امپلسٹ اینیمیشن UIView.animate بلاک سے باہر CALayer کی اینیمیٹیبل پراپرٹی تبدیل کرنے پر خودکار اینیمیشن ہے۔ ڈیفالٹ دورانیہ 0.25 سیکنڈ ہے۔ اسے CATransaction.setDisableActions(true) کے ذریعے غیر فعال کیا جا سکتا ہے یا CATransaction.begin/commit کے ذریعے حسب ضرورت دورانیہ سیٹ کیا جا سکتا ہے۔

CALayer کی بجائے CAShapeLayer کب استعمال کریں؟

CAShapeLayer زیادہ موثر ہے جب آپ کو ویکٹر شکل — لکیر، دائرہ، کثیرالاضلاع، پیچیدہ پاتھ ڈسپلے کرنے کی ضرورت ہو۔ یہ علیحدہ راسٹر بفر بنائے بغیر GPU پر پاتھ رینڈر کرتی ہے۔ بنیادی CALayer پس منظر، بارڈر اور سایہ کے ساتھ مستطیل علاقوں کے لیے موزوں ہے۔

خلاصہ

  • CALayer iOS میں گرافیکل لیئرز کی بنیادی کلاس ہے، جو Core Animation کے ذریعے رینڈرنگ، اینیمیشن اور کمپوزیشن کی ذمہ دار ہے۔
  • ہر UIView میں CALayer ہوتی ہے، لیکن لیئر کو ٹچ ہینڈلنگ کے بغیر بصری عناصر کے لیے آزادانہ طور پر بھی استعمال کیا جا سکتا ہے۔
  • بنیادی خصوصیات: frame, bounds, backgroundColor, cornerRadius, shadowPath, transform, opacity — سبھی اینیمیٹیبل۔
  • خصوصی ذیلی کلاسز: CAShapeLayer, CATextLayer, CAGradientLayer, CAEmitterLayer, CAReplicatorLayer۔
  • رینڈرنگ تین مراحل سے گزرتی ہے: Commit, Render, Composite — سبھی Metal کے ذریعے GPU پر۔
  • آف اسکرین رینڈرنگ ماسک، shouldRasterize اور گروپ opacity کے ساتھ ہوتی ہے — 60 FPS کے لیے اسے کم سے کم کریں۔
  • واضح shadowPath خودکار حساب کے مقابلے میں سایہ رینڈرنگ کو 2–3 گنا تیز کرتا ہے۔

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

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

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

مزید پڑھیں