Size Class iOS میں انکولی لے آؤٹ کے لیے ایک طریقہ کار ہے جو تمام آلات کو ہر محور پر دو زمروں میں تقسیم کرتا ہے: Compact (تنگ/چھوٹا) اور Regular (چوڑا/لمبا)۔ ان اقدار کے امتزاج کا تعین کرتے ہیں کہ انٹرفیس iPhone، iPad، Mac Catalyst اور CarPlay پر کیسے ظاہر ہوتا ہے۔ Apple Human Interface Guidelines، 2024 کے مطابق، Size Class Auto Layout اور UITraitCollection استعمال کرتے ہوئے تمام آلات کے لیے ایک storyboard بنانے کی اجازت دیتا ہے۔ نظام iOS 8 سے تمام iOS آلات پر کام کرتا ہے۔
اہم نکات
Size Class iOS میں ایک تجریدی اسکرین درجہ بندی ہے، جسے Apple نے iOS 8 میں انکولی لے آؤٹ کو متحد کرنے کے لیے متعارف کرایا تھا۔ کسی مخصوص آلے کے ماڈل کو چیک کرنے کے بجائے، Size Class دو خصوصیات کی وضاحت کرتا ہے: دستیاب افقی اور عمودی جگہ۔ ہر خصوصیت دو قدروں میں سے ایک لیتی ہے — Compact (محدود جگہ) یا Regular (کافی جگہ)۔ ان اقدار کا امتزاج ایک ٹریٹ کلیکشن بناتا ہے، جو تمام انٹرفیس عناصر کو منتقل کیا جاتا ہے۔
Size Class سے پہلے، ڈیولپرز iPhone اور iPad کے لیے علیحدہ storyboards بناتے تھے یا کوڈ میں UI_USER_INTERFACE_IDIOM() چیک استعمال کرتے تھے۔ اس سے کوڈ کی نقل، storyboards کا پھولنا، اور نئی اسکرین سائز کی حمایت میں مشکلات پیدا ہوتی تھیں۔ Size Class نے ایک عالمگیر نظام پیش کرکے مسئلہ حل کیا: ڈیولپر 4 Compact/Regular امتزاج کے لیے انٹرفیس ترتیب دیتا ہے، اور iOS خودکار طور پر مناسب کا انتخاب کرتا ہے۔ iPad پر Split View اور مختلف iPhone سائز کی آمد کے ساتھ، نظام انکولی لے آؤٹ کے لیے ناگزیر ہو گیا۔
Size Class iOS کے ذریعہ موجودہ اسکرین کی چوڑائی اور اونچائی کی بنیاد پر، سمت اور ملٹی ٹاسکنگ کو مدنظر رکھتے ہوئے شمار کیا جاتا ہے۔ اقدار مخصوص پکسلز سے منسلک نہیں ہیں — یہ ایک منطقی زمرہ ہے۔ مثال کے طور پر، iPhone 16 Pro عمودی سمت میں افقی Compact اور عمودی Regular ہے۔ وہی iPhone افقی سمت میں — دونوں محوروں پر Compact۔ Split View میں 1/3 اسکرین پر ایپ والا iPad افقی Compact حاصل کرتا ہے، حالانکہ فل اسکرین موڈ میں یہ Regular ہے۔ نظام خودکار طور پر سمت یا Split View تبدیل ہونے پر Size Class اپ ڈیٹ کرتا ہے۔
Size Class دو محوروں پر دو قدروں کے چار امتزاج استعمال کرتا ہے۔ ہر امتزاج کا اپنا اطلاق ہوتا ہے جو آلے کی قسم اور اس کی سمت پر منحصر ہے۔ ان امتزاج کو سمجھنا iOS کے لیے انکولی انٹرفیس ڈیزائن کرنے کی بنیاد ہے۔ نظام تمام موجودہ Apple آلات کا احاطہ کرتا ہے: iPhone، iPad، Mac Catalyst اور CarPlay۔ Apple wAny hAny (بنیادی لے آؤٹ) کے امتزاج سے ڈیزائن شروع کرنے اور مخصوص امتزاج کے لیے بہتر بنانے کی سفارش کرتا ہے۔
wCompact hRegular — عمودی iPhone (بعض صورتوں میں Plus/Max کو چھوڑ کر)۔ wCompact hCompact — افقی iPhone SE/6/7/8۔ wRegular hRegular — کسی بھی سمت میں فل اسکرین iPad، افقی iPhone Plus/Max۔ wRegular hCompact — تنگ مواد کے ساتھ افقی iPad۔ ہر امتزاج تعین کرتا ہے کہ کون سی رکاوٹیں اور عناصر فعال ہیں۔ ڈیولپر Interface Builder میں ہر امتزاج کے لیے علیحدہ طور پر ظاہری شکل مقرر کر سکتا ہے۔
Mac Catalyst پر، Size Class ہمیشہ wRegular hRegular — مکمل سائز کا انٹرفیس ہے۔ اس کا مطلب ہے کہ iPad ایپ کا Mac ورژن زیادہ سے زیادہ جگہ حاصل کرتا ہے۔ ڈیولپر Mac کو iPad سے ممتاز کرنے کے لیے UIScreen.traitCollection.userInterfaceIdiom کے ذریعے اضافی چیک استعمال کر سکتا ہے۔ Mac پر Size Class مستحکم طور پر کام کرتا ہے، لیکن Catalyst ایپس کو اکثر Size Class سے آگے ماؤس اور کی بورڈ کے لیے اضافی موافقت کی ضرورت ہوتی ہے۔
Size Class تعین کرتا ہے کہ کون سی Auto Layout رکاوٹیں فعال ہیں، کون سے انٹرفیس عناصر نظر آتے ہیں، اور subviews کیسے ترتیب دیے گئے ہیں۔ ڈیولپر مختلف Size Classes کے لیے مختلف رکاوٹیں مقرر کر سکتا ہے، اور ٹریٹ کلیکشن تبدیل ہونے پر iOS خودکار طور پر انہیں تبدیل کر دیتا ہے۔ مثال کے طور پر، iPad (wRegular hRegular) پر تفصیل کے ساتھ جدول Master-Detail میں ظاہر ہوتا ہے، iPhone (wCompact hRegular) پر — Navigation Stack میں۔ یہ Size Class کے ساتھ انکولی لے آؤٹ کا مرکزی منظرنامہ ہے۔
Interface Builder میں، ڈیولپر Vary for Traits بٹن کے ذریعے Size Class امتزاج منتخب کرتا ہے اور رکاوٹیں شامل کرتا ہے جو صرف اس امتزاج کے لیے لاگو ہونی چاہئیں۔ wAny hAny کے لیے مقرر کردہ رکاوٹیں ہمیشہ لاگو ہوتی ہیں۔ مخصوص امتزاج کے لیے مقرر کردہ رکاوٹیں صرف اس وقت فعال ہوتی ہیں جب Size Class مماثل ہو۔ اگر کسی امتزاج کے لیے کوئی خاص رکاوٹیں مقرر نہیں ہیں، تو بنیادی رکاوٹیں استعمال ہوتی ہیں۔ جب Size Class تبدیل ہوتا ہے، iOS رکاوٹوں کے سیٹ کے درمیان منتقلی کو متحرک کرتا ہے۔
Interface Builder میں Installed پرچم مخصوص Size Classes کے لیے عناصر چھپانے کی اجازت دیتا ہے۔ ڈیولپر منتخب امتزاج کے لیے عنصر کو Uninstalled کے طور پر نشان زد کرتا ہے۔ مثال کے طور پر، Details بٹن صرف iPad (wRegular hRegular) پر نظر آتا ہے، اور iPhone پر چھپا ہوا ہے۔ یہ کوڈ میں isHidden کے انتظام سے آسان ہے۔ پروگرامیٹک چھپانے کے لیے، traitCollectionDidChange کو اوور رائڈ کریں یا willTransition طریقہ استعمال کریں، موجودہ Size Class چیک کریں۔
Interface Builder Size Class کے ساتھ کام کرنے کے لیے بصری Vary for Traits ٹول فراہم کرتا ہے۔ ڈیولپر مطلوبہ امتزاج (چوڑائی اور اونچائی) منتخب کرتا ہے، اور Interface Builder اس امتزاج کے لیے اسکرین کا پیش نظارہ دکھاتا ہے۔ اس موڈ میں کی گئی تمام رکاوٹوں، سائز، فونٹ اور نمائش کی تبدیلیاں صرف منتخب Size Class پر لاگو ہوتی ہیں۔ موڈ سے باہر نکلنے پر ترتیبات محفوظ ہو جاتی ہیں۔ یہ طریقہ مختلف آلات کے لیے موافقت کوڈ لکھنے کی ضرورت کو ختم کرتا ہے۔
Interface Builder میں Size Class ترتیب دینے کے لیے، ڈیولپر ایک storyboard کھولتا ہے، view controller منتخب کرتا ہے، اور نچلے پینل میں Vary for Traits بٹن پر کلک کرتا ہے۔ پھر Width (Compact، Regular یا Any) اور Height (Compact، Regular یا Any) منتخب کرتا ہے۔ انٹرفیس منتخب امتزاج کے لیے ترمیمی موڈ میں تبدیل ہو جاتا ہے۔ تمام رکاوٹوں کی تبدیلیاں، عناصر کا اضافہ یا ہٹانا صرف اس امتزاج پر لاگو ہوتے ہیں۔ سیٹ اپ مکمل کرنے کے بعد، ڈیولپر موڈ سے باہر نکلتا ہے — تبدیلیاں مخصوص Size Class امتزاج کے لیے محفوظ ہو جاتی ہیں۔
Apple wAny hAny (تمام آلات کا احاطہ کرنے والا بنیادی امتزاج) کے لیے بنیادی لے آؤٹ سے شروع کرنے کی سفارش کرتا ہے۔ پھر مسئلہ پیدا کرنے والے امتزاج کے لیے لے آؤٹ بہتر کریں: wCompact hRegular (عمودی iPhone) اور wRegular hRegular (iPad)۔ ہر امتزاج کو ترتیب دینے کی سفارش نہیں کی جاتی — صرف وہ جہاں لے آؤٹ ٹوٹتا ہے۔ ضرورت سے زیادہ ترتیب دیکھ بھال کو پیچیدہ بناتی ہے۔ عین مطابق فونٹ سائز کے لیے، Size Class کے بجائے Dynamic Type استعمال کریں: فونٹ خودکار طور پر اسکرین سائز کے مطابق ڈھل جاتے ہیں۔
UITraitCollection ایک iOS کلاس ہے جس میں موجودہ Size Class اور دیگر ماحولیاتی خصوصیات (force touch، ڈسپلے اسکیل، یوزر انٹرفیس ایڈیوم) شامل ہیں۔ ہر UIView اور UIViewController کا اپنا traitCollection ہے، جو والد سے وراثت میں ملا ہے۔ ڈیولپر traitCollection.horizontalSizeClass اور traitCollection.verticalSizeClass کے ذریعے Size Class حاصل کرتا ہے، جو UIUserInterfaceSizeClass (.compact، .regular یا .unspecified) لوٹاتے ہیں۔ Size Class تبدیلیاں traitCollectionDidChange کو اوور رائڈ کرکے ٹریک کی جاتی ہیں۔
Size Class کے مطابق UICollectionView لے آؤٹ کو ڈھالنے کی ایک مثال پر غور کریں۔ iPad (wRegular hRegular) پر دو کالموں کے ساتھ UICollectionViewCompositionalLayout استعمال کریں، iPhone (wCompact hRegular) پر — ایک کے ساتھ۔ کوڈ افقی Size Class چیک کرتا ہے اور مناسب لے آؤٹ منتخب کرتا ہے۔ گردش یا Split View منتقلی پر، iOS traitCollectionDidChange کال کرتا ہے، اور کنٹرولر اینیمیشن کے ساتھ لے آؤٹ تبدیل کرتا ہے۔
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.horizontalSizeClass == .Compact {
collectionView.collectionViewLayout = SingleColumnLayout()
} else {
collectionView.collectionViewLayout = DoubleColumnLayout()
}
}
traitCollectionDidChange طریقہ کسی بھی Size Class تبدیلی پر کال کیا جاتا ہے: ڈیوائس گردش، Split View میں داخل/خارج، بیرونی ڈسپلے کنکشن۔ اس طریقہ میں، ڈیولپر لے آؤٹ اپ ڈیٹ کرتا ہے، کلیکشن دوبارہ لوڈ کرتا ہے، رکاوٹوں کی ترجیحات اپ ڈیٹ کرتا ہے یا عنصر کی نمائش تبدیل کرتا ہے۔ یہ چیک کرنا ضروری ہے کہ آیا واقعی Size Class تبدیل ہوا ہے، کوئی اور خصوصیت نہیں: traitCollection.horizontalSizeClass کا previousTraitCollection?.horizontalSizeClass سے موازنہ کریں۔ اصلاح force touch یا ڈسپلے اسکیل تبدیل ہونے پر غیر ضروری دوبارہ ڈرائنگ کو روکتی ہے۔
مختلف Apple آلات کے Size Class کے مختلف امتزاج ہیں، اور ڈیولپر کو ان خصوصیات کو مدنظر رکھنا چاہیے۔ iPhone عمودی — wCompact hRegular، افقی — ماڈل پر منحصر: iPhone SE/6/7/8 (wCompact hCompact)، iPhone X اور نیا (مواد کے مطابق wCompact hCompact یا wCompact hRegular)۔ iPad فل اسکرین موڈ میں — wRegular hRegular، Split View میں — wCompact hRegular (1/3 اسکرین) یا wRegular hRegular (2/3 اسکرین) ہو سکتا ہے۔ Mac Catalyst — ہمیشہ wRegular hRegular۔
iPhone پر، Size Class زیادہ تر ماڈلز کے لیے مستحکم ہے، لیکن باریکیاں ہیں۔ iPhone Plus (6+، 7+، 8+) اور Max (X، XS، 11 Pro، 13–16 Pro Max) افقی میں wRegular hCompact — iPad mini کی طرح۔ یہ بڑے iPhone پر افقی میں دو کالموں میں مواد رکھنے کی اجازت دیتا ہے۔ iPhone SE (پہلی–تیسری نسل) افقی میں — wCompact hCompact۔ عمودی میں تمام iPhone پر عمودی Size Class Regular ہے، سوائے افقی میں iPhone SE کے جہاں یہ Compact ہے۔ افقی ہمیشہ عمودی اور افقی کے لیے Compact ہے (افقی میں Plus/Max کے علاوہ)۔
iPad فل اسکرین موڈ میں — wRegular hRegular، زیادہ سے زیادہ لے آؤٹ لچک فراہم کرتا ہے۔ Split View میں، رویہ تبدیل ہوتا ہے: اگر ایپ اسکرین کا 1/3 حصہ گھیرتی ہے (Slide Over یا 1/3 پر Split)، افقی Size Class Compact ہو جاتا ہے، حالانکہ عمودی Regular رہتا ہے۔ 2/3 اسکرین پر — wRegular hRegular۔ ڈیولپر کو تمام Split View موڈز میں انٹرفیس ٹیسٹ کرنا چاہیے، کیونکہ Size Class متحرک طور پر تبدیل ہوتا ہے۔ Apple iPad پر مستقل رویے کے لیے UISplitViewController کے ساتھ Size Class استعمال کرنے کی سفارش کرتا ہے۔
اکثر پوچھے گئے سوالات
Size Class 4 امتزاج کے ساتھ ایک مجرد نظام ہے، جبکہ CSS بریک پوائنٹس صوابدیدی تعداد میں پوائنٹس کے ساتھ ایک مسلسل نظام ہے۔ Size Class مخصوص اسکرین سائز سے تجرید کرتا ہے، آلات کو رویے کے مطابق گروپ کرتا ہے۔ CSS بریک پوائنٹس پکسلز سے منسلک ہیں، Size Class — منطقی Compact/Regular زمروں سے۔
iPhone Plus/Max افقی میں دو کالموں میں مواد دکھانے کے لیے کافی اسکرین چوڑائی رکھتا ہے (iPad mini کی طرح)۔ Apple افقی Regular مقرر کرتا ہے تاکہ ڈیولپر اضافی چیک کے بغیر ملٹی کالم لے آؤٹ استعمال کر سکے۔ یہ iPhone کے Compact اصول کی ایک استثنا ہے۔
Size Class iOS کے ذریعہ حقیقی آلے کی خصوصیات کی بنیاد پر متعین کیا جاتا ہے اور ایپ کوڈ سے تبدیل نہیں کیا جا سکتا۔ ڈیولپر صرف موجودہ قدر پر رد عمل ظاہر کر سکتا ہے۔ سسٹم UI سسٹم عناصر کے لیے Size Class کو اوور رائڈ کر سکتا ہے، لیکن ایپ میں یہ ناممکن ہے۔
SwiftUI براہ راست Size Class استعمال نہیں کرتا — اس کے بجائے، ڈیولپر موجودہ قدر پڑھنے کے لیے @Environment(\.horizontalSizeClass) موڈیفائر استعمال کرتا ہے۔ SwiftUI اعلیٰ سطحی ٹولز فراہم کرتا ہے: Size Classes اور Layout پروٹوکول کے ساتھ AnyLayout انکولی لے آؤٹ کے لیے۔
ہاں، Stage Manager یا Sidecar کے ذریعے بیرونی ڈسپلے منسلک کرنے پر، iOS Size Class اپ ڈیٹ کرتا ہے۔ بیرونی مانیٹر عام طور پر wRegular hRegular حاصل کرتا ہے، جبکہ مرکزی اسکرین اپنا Size Class برقرار رکھتی ہے۔ traitCollectionDidChange ہر اسکرین پر ونڈوز کے لیے آزادانہ طور پر کال کیا جاتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں