CALayer iOS میں گرافیکل لیئرز کے لیے بیس کلاس ہے، جو QuartzCore فریم ورک کا حصہ ہے۔ iOS میں ہر UIView سے ایک CALayer منسلک ہوتی ہے جو مواد کی رینڈرنگ، اینیمیشن اور GPU کمپوزیشن کو سنبھالتی ہے۔ Apple QuartzCore Documentation, 2025 کے مطابق، CALayer 40 سے زیادہ اینیمیٹیبل خصوصیات کو سپورٹ کرتی ہے اور براہ راست Metal کے ذریعے کام کرتی ہے۔ ہموار اینیمیشن بنانے اور انٹرفیس کی کارکردگی کو بہتر بنانے کے لیے 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 کے ذریعے انہیں درجہ بندی میں شامل کر سکتے ہیں۔
UIView CALayer کے گرد ایک ریپر ہے جو شامل کرتا ہے: UIResponder کے ذریعے ٹچ ہینڈلنگ، Auto Layout میں شرکت، storyboard میں نمائندگی، اور UIViewController کے ساتھ انضمام۔ CALayer ایک ہلکی پھلکی آبجیکٹ ہے جو خالصتاً بصری عناصر کے لیے UIView کے بغیر استعمال کی جا سکتی ہے۔
عملی طور پر، اس کا مطلب ہے کہ اگر کسی عنصر کو ٹچ ہینڈلنگ یا لے آؤٹ کی ضرورت نہیں ہے، تو اسے CALayer کے طور پر لاگو کیا جا سکتا ہے۔ مثال کے طور پر، پس منظر کی اینیمیشن، لوڈنگ انڈیکیٹر، آرائشی عناصر — یہ سب UIView کے اوور ہیڈ سے بچتے ہوئے CALayer کے ذریعے زیادہ مؤثر طریقے سے لاگو ہوتے ہیں۔
بنیادی خصوصیات میں فریم، پوزیشننگ، ڈسپلے اور بصری اثرات شامل ہیں۔ frame پیرنٹ کوآرڈینیٹ میں لیئر کے مستطیل علاقے کی وضاحت کرتا ہے، bounds اندرونی کوآرڈینیٹ کی وضاحت کرتا ہے، اور position لیئر کے مرکز کی وضاحت کرتی ہے۔ position کی تبدیلی ڈیفالٹ طور پر امپلسٹ اینیمیشن کے ذریعے اینیمیٹ ہوتی ہے۔
contents پراپرٹی براہ راست بٹ میپ مواد سیٹ کرنے کی اجازت دیتی ہے — CGImage یا CIImage کے ذریعے۔ یہ drawRect کے ذریعے ڈرائنگ کا ایک متبادل ہے: اگر تصویر پہلے سے تیار ہے، تو اسے contents میں منتقل کیا جا سکتا ہے، اور Core Animation اسے اضافی پروسیسنگ کے بغیر رینڈر کرے گا۔
اینیمیشن کے لیے CABasicAnimation, CAKeyframeAnimation اور CATransition استعمال ہوتے ہیں۔ یہ تمام کلاسیں CALayer کی پراپرٹی کلیدی پاتھ کے ذریعے کام کرتی ہیں، جو position سے transform.rotation.z تک تقریباً کسی بھی صفت کو اینیمیٹ کرنے کی اجازت دیتی ہیں۔
Apple کئی خصوصی CALayer ذیلی کلاسز فراہم کرتا ہے، ہر ایک مخصوص کام کو حل کرتا ہے۔ بنیادی CALayer کے بجائے مناسب ذیلی کلاس کا انتخاب ہارڈویئر ایکسلریشن کے ذریعے نمایاں کارکردگی میں بہتری لا سکتا ہے۔
CAReplicatorLayer کوڈ کی نقل کے بغیر بار بار پیٹرن بنانے کے لیے خاص طور پر مفید ہے۔ مثال کے طور پر، 10 ڈاٹس والا لوڈنگ انڈیکیٹر instanceCount = 10 اور اینیمیشن ٹائم آفسیٹ instanceDelay کے ساتھ ایک CAReplicatorLayer سے لاگو کیا جاتا ہے۔
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 میں ایک اہم اصلاحی تکنیک ہے۔
پہلی مثال سایہ بنانے، کونوں کو گول کرنے اور بارڈر کے ساتھ بنیادی CALayer سیٹ اپ کو ظاہر کرتی ہے۔ رینڈرنگ کو تیز کرنے کے لیے shadowPath واضح طور پر مخصوص کیا گیا ہے:
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 محور گردش اینیمیشن کارڈ پلٹنے کا اثر پیدا کرتی ہے:
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 پر رینڈر ہوتا ہے اور سائز تبدیل کرنے پر اضافی وسائل کی ضرورت نہیں ہوتی:
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)
}
اکثر پوچھے گئے سوالات
UIView CALayer کے گرد ایک ریپر ہے جو ٹچ ہینڈلنگ، Auto Layout اور UIViewController انضمام شامل کرتا ہے۔ CALayer صرف بصری پیشکش اور اینیمیشن کے ساتھ کام کرتی ہے، جو اسے خالصتاً گرافیکل کاموں کے لیے ہلکا اور زیادہ موثر بناتی ہے۔
position, bounds, frame, opacity, backgroundColor, cornerRadius, transform, shadowOffset, shadowRadius, borderWidth اور borderColor سمیت 40 سے زیادہ خصوصیات۔ UIView.animate اینیمیشن بلاک کے اندر پراپرٹی تبدیل کرنے پر اینیمیشن خود بخود شروع ہو جاتی ہے۔
shadowPath سیٹ کریں — UIBezierPath کے طور پر ایک واضح سایہ کا خاکہ۔ shadowPath کے بغیر، Core Animation سایہ کی شکل کا حساب لگانے کے لیے مواد کے الفا چینل کا تجزیہ کرتا ہے، جس کے لیے اضافی پاس کی ضرورت ہوتی ہے۔ shadowPath کے ساتھ، سایہ مواد کے تجزیہ کے بغیر ایک سادہ ہندسی شکل کے طور پر رینڈر ہوتا ہے۔
امپلسٹ اینیمیشن UIView.animate بلاک سے باہر CALayer کی اینیمیٹیبل پراپرٹی تبدیل کرنے پر خودکار اینیمیشن ہے۔ ڈیفالٹ دورانیہ 0.25 سیکنڈ ہے۔ اسے CATransaction.setDisableActions(true) کے ذریعے غیر فعال کیا جا سکتا ہے یا CATransaction.begin/commit کے ذریعے حسب ضرورت دورانیہ سیٹ کیا جا سکتا ہے۔
CAShapeLayer زیادہ موثر ہے جب آپ کو ویکٹر شکل — لکیر، دائرہ، کثیرالاضلاع، پیچیدہ پاتھ ڈسپلے کرنے کی ضرورت ہو۔ یہ علیحدہ راسٹر بفر بنائے بغیر GPU پر پاتھ رینڈر کرتی ہے۔ بنیادی CALayer پس منظر، بارڈر اور سایہ کے ساتھ مستطیل علاقوں کے لیے موزوں ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں