Size Class: bu nima, Compact va Regular o'lcham sinflari iOS da

Muallif: IT Sectr Nashr etilgan: 2026-06-08 O'qish vaqti: 8 daq

Size Class — iOS dagi adaptiv maket uchun mexanizm bo'lib, barcha qurilmalarni har bir o'q bo'yicha ikki toifaga ajratadi: Compact (tor/qisqa) va Regular (keng/uzun). Bu qiymatlarning kombinatsiyalari interfeysning iPhone, iPad, Mac Catalyst va CarPlay da qanday ko'rinishini belgilaydi. Apple Human Interface Guidelines, 2024 ga ko'ra, Size Class Auto Layout va UITraitCollection dan foydalanib barcha qurilmalar uchun bitta storyboard yaratishga imkon beradi. Tizim iOS 8 dan boshlab barcha iOS qurilmalarida ishlaydi.

Asosiy fikrlar

  • Size Class — iOS da har bir o'q uchun ikkita qiymatga ega o'lcham tasnif tizimi: Compact (siqilgan) va Regular (to'liq o'lchamli).
  • Gorizontal Size Class iPhone da portret yo'nalishida — Compact, iPad da — Regular. Vertikal — SE dan tashqari barcha iPhone larda Regular.
  • UITraitCollection — joriy Size Class ni olish va trait collection o'zgarishlariga reaksiya berish uchun dasturiy interfeys.
  • Interface Builder Vary for Traits vositasi bilan har bir Size Class kombinatsiyasi uchun constraint lar va element ko'rinishini sozlashga imkon beradi.
  • Size Class ga asoslangan adaptiv maket iPhone va iPad uchun alohida storyboard larni almashtiradi — bitta fayl barcha qurilmalarga moslashadi.

Size Class nima?

Size Class — Apple tomonidan iOS 8 da adaptiv maketni birlashtirish uchun joriy qilingan iOS ekranining mavhum tasnifidir. Qurilmaning aniq modelini tekshirish o'rniga, Size Class ikkita xarakteristikani aniqlaydi: gorizontal va vertikal bo'ylab mavjud joy. Har bir xarakteristika ikkita qiymatdan birini oladi — Compact (cheklangan joy) yoki Regular (yetarli joy). Bu qiymatlarning kombinatsiyasi trait collection ni hosil qiladi, u interfeysning barcha elementlariga uzatiladi.

Tarix va maqsad

Size Class paydo bo'lishidan oldin dasturchilar iPhone va iPad uchun alohida storyboard lar yaratardi yoki kodda UI_USER_INTERFACE_IDIOM() tekshiruvlaridan foydalanardi. Bu kod takrorlanishiga, storyboard larning kengayishiga va yangi ekran o'lchamlarini qo'llab-quvvatlashda qiyinchiliklarga olib keldi. Size Class universal tizimni taklif qilib muammoni hal qildi: dasturchi interfeysni 4 Compact/Regular kombinatsiyasi uchun sozlaydi va iOS avtomatik ravishda mosini tanlaydi. iPad da Split View va turli iPhone o'lchamlarining paydo bo'lishi bilan tizim adaptiv maket uchun ajralmas bo'ldi.

Size Class qanday ishlaydi

Size Class iOS tomonidan joriy ekranning kengligi va balandligi asosida, yo'nalish va multitasking ni hisobga olgan holda hisoblanadi. Qiymatlar aniq piksellarga bog'liq emas — bu mantiqiy toifadir. Masalan, iPhone 16 Pro portretda gorizontal Compact va vertikal Regular ga ega. Xuddi shu iPhone landshaftda — ikkala o'qda Compact. Split View da 1/3 ekranni egallagan ilova gorizontal Compact oladi, to'liq ekran rejimida esa Regular. Tizim yo'nalish yoki Split View o'zgarganda Size Class ni avtomatik yangilaydi.

Qanday o'lcham sinflari bor

Size Class ikki o'qda ikki qiymatning to'rt kombinatsiyasidan foydalanadi. Har bir kombinatsiya qurilma turiga va uning yo'nalishiga qarab o'z qo'llanilishiga ega. Bu kombinatsiyalarni tushunish iOS uchun adaptiv interfeys dizaynining asosidir. Tizim barcha amaldagi Apple qurilmalarini qamrab oladi: iPhone, iPad, Mac Catalyst va CarPlay. Apple wAny hAny kombinatsiyasidan (asosiy maket) boshlashni va aniq kombinatsiyalar uchun aniqlashtirishni tavsiya qiladi.

To'rt Size Class kombinatsiyasi

wCompact hRegular — portret iPhone (ba'zi hollarda Plus/Max dan tashqari). wCompact hCompact — landshaft iPhone SE/6/7/8. wRegular hRegular — to'liq ekran iPad har qanday yo'nalishda, iPhone Plus/Max landshaftda. wRegular hCompact — tor tarkibli landshaft iPad. Har bir kombinatsiya qaysi constraint lar va elementlar faol ekanligini aniqlaydi. Dasturchi Interface Builder da har bir kombinatsiya uchun alohida ko'rinish o'rnatishi mumkin.

Mac Catalyst uchun Size Class

Mac Catalyst da Size Class har doim wRegular hRegular — to'liq o'lchamli interfeys. Bu iPad ilovasining Mac versiyasi maksimal joy olishini anglatadi. Dasturchi Mac ni iPad dan farqlash uchun UIScreen.traitCollection.userInterfaceIdiom orqali qo'shimcha tekshiruvlardan foydalanishi mumkin. Mac da Size Class barqaror ishlaydi, lekin Catalyst ilovalari ko'pincha Size Class doirasidan tashqariga chiqadigan sichqoncha va klaviatura moslashuvini talab qiladi.

Size Class adaptiv maketga qanday ta'sir qiladi

Size Class qaysi Auto Layout constraint lari faolligini, qaysi interfeys elementlari ko'rinishini va subview larning joylashishini aniqlaydi. Dasturchi turli Size Class lar uchun turli constraint lar o'rnatishi mumkin va iOS trait collection o'zgarganda ularni avtomatik almashtiradi. Masalan, iPad da (wRegular hRegular) jadval tafsilotlar bilan Master-Detail da ko'rsatiladi, iPhone da (wCompact hRegular) — Navigation Stack da. Bu Size Class bilan adaptiv maketning asosiy stsenariysidir.

Constraint larni o'rnatish va olib tashlash

Interface Builder da dasturchi Vary for Traits tugmasi orqali Size Class kombinatsiyasini tanlaydi va faqat shu kombinatsiya uchun ishlashi kerak bo'lgan constraint lar qo'shadi. wAny hAny uchun o'rnatilgan constraint lar har doim ishlaydi. Muayyan kombinatsiya uchun o'rnatilgan constraint lar faqat Size Class mos kelganda faollashadi. Agar kombinatsiya uchun maxsus constraint lar o'rnatilmagan bo'lsa, asosiy constraint lar ishlatiladi. Size Class o'zgarganda iOS constraint to'plamlari orasidagi o'tishni animatsiya qiladi.

Elementlarni yashirish va ko'rsatish

Installed bayrog'i Interface Builder da ma'lum Size Class lar uchun elementlarni yashirishga imkon beradi. Dasturchi elementni tanlangan kombinatsiya uchun Uninstalled deb belgilaydi. Masalan, Details tugmasi faqat iPad da (wRegular hRegular) ko'rinadi, iPhone da esa yashirin. Bu kodda isHidden ni boshqarishdan osonroq. Dasturiy yashirish uchun traitCollectionDidChange ni override qilish yoki willTransition metodidan foydalaniladi, bunda joriy Size Class tekshiriladi.

Interface Builder da Size Class dan foydalanish

Interface Builder Size Class bilan ishlash uchun Vary for Traits vizual vositasini taqdim etadi. Dasturchi kerakli kombinatsiyani (kenglik va balandlik) tanlaydi va Interface Builder bu kombinatsiya uchun ekran oldindan ko'rishini ko'rsatadi. Bu rejimda qilingan barcha constraint, o'lcham, shrift va ko'rinish o'zgarishlari faqat tanlangan Size Class ga qo'llaniladi. Rejimdan chiqish sozlamalarni mustahkamlaydi. Bu yondashuv turli qurilmalar uchun moslashuv kodi yozish zaruratini bartaraf qiladi.

Interface Builder da bosqichma-bosqich ish

Size Class ni sozlash uchun Interface Builder da dasturchi storyboard ni ochadi, view controller ni tanlaydi va pastki panelda Vary for Traits tugmasini bosadi. Keyin Width (Compact, Regular yoki Any) va Height (Compact, Regular yoki Any) ni tanlaydi. Interfeys tanlangan kombinatsiya uchun tahrirlash rejimiga o'tadi. Barcha constraint o'zgarishlari, elementlarni qo'shish yoki olib tashlash faqat shu kombinatsiyaga qo'llaniladi. Sozlash tugagach, dasturchi rejimdan chiqadi — o'zgarishlar aniq Size Class kombinatsiyasi uchun saqlanadi.

Eng yaxshi amaliyotlar

Apple wAny hAny uchun asosiy maketdan boshlashni (barcha qurilmalarni qamrab oluvchi asosiy kombinatsiya) tavsiya qiladi. Keyin muammoli kombinatsiyalar uchun maketni aniqlashtiring: wCompact hRegular (portret iPhone) va wRegular hRegular (iPad). Har bir kombinatsiyani sozlash tavsiya etilmaydi — faqat maket buziladigan joylarda. Haddan tashqari sozlash qo'llab-quvvatlashni qiyinlashtiradi. Shriftlarni aniq sozlash uchun Size Class o'rniga Dynamic Type dan foydalaning: shriftlar avtomatik ravishda ekran o'lchamiga moslashadi.

Kodda Size Class: UITraitCollection

UITraitCollection — joriy Size Class va boshqa muhit xarakteristikalarini (force touch, display scale, user interface idiom) o'z ichiga olgan iOS sinfidir. Har bir UIView va UIViewController ota-onadan meros qilib olingan o'z traitCollection ga ega. Dasturchi Size Class ni traitCollection.horizontalSizeClass va traitCollection.verticalSizeClass orqali oladi, ular UIUserInterfaceSizeClass (.compact, .regular yoki .unspecified) qaytaradi. Size Class o'zgarishi traitCollectionDidChange ni override qilish orqali kuzatiladi.

Misol: kodda maketni almashtirish

Misolni ko'rib chiqaylik: UICollectionView maketini Size Class ga moslashtirish. iPad da (wRegular hRegular) ikki ustunli UICollectionViewCompositionalLayout dan foydalanamiz, iPhone da (wCompact hRegular) — bir ustunli. Kod gorizontal Size Class ni tekshiradi va tegishli maketni tanlaydi. Aylanish yoki Split View ga o'tishda iOS traitCollectionDidChange ni chaqiradi va controller maketni animatsiya bilan almashtiradi.

swift
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    if traitCollection.horizontalSizeClass == .Compact {
        collectionView.collectionViewLayout = SingleColumnLayout()
    } else {
        collectionView.collectionViewLayout = DoubleColumnLayout()
    }
}

Trait collection o'zgarishlariga reaksiya

traitCollectionDidChange metodi Size Class ning har o'zgarishida chaqiriladi: qurilmaning aylanishi, Split View ga kirish/chiqish, tashqi displeyning ulanishi. Bu metodda dasturchi maketni yangilaydi, to'plamlarni qayta yuklaydi, constraint prioritetlarini yangilaydi yoki elementlar ko'rinishini o'zgartiradi. Aynan Size Class o'zgarganligini tekshirish muhim, boshqa xarakteristika emas: traitCollection.horizontalSizeClass ni previousTraitCollection?.horizontalSizeClass bilan solishtiring. Optimizatsiya force touch yoki display scale o'zgarganda keraksiz qayta chizishlarning oldini oladi.

Turli qurilmalarda Size Class xususiyatlari

Turli Apple qurilmalari turli Size Class kombinatsiyalariga ega va dasturchi bu xususiyatlarni hisobga olishi kerak. iPhone portretda — wCompact hRegular, landshaftda — modelga bog'liq: iPhone SE/6/7/8 (wCompact hCompact), iPhone X va yangilari (wCompact hCompact yoki tarkibga qarab wCompact hRegular). To'liq ekran rejimida iPad — wRegular hRegular, Split View da — wCompact hRegular (1/3 ekran) yoki wRegular hRegular (2/3 ekran) bo'lishi mumkin. Mac Catalyst — har doim wRegular hRegular.

iPhone: barcha o'lchamlar

iPhone da Size Class ko'pchilik modellar uchun barqaror, ammo nuanslar bor. iPhone Plus (6+, 7+, 8+) va Max (X, XS, 11 Pro, 13–16 Pro Max) landshaftda wRegular hCompact ga ega — iPad mini kabi. Bu katta iPhone larda landshaftda tarkibni ikki ustunda joylashtirishga imkon beradi. iPhone SE (1–3 avlod) landshaftda — wCompact hCompact. Portretda barcha iPhone larda vertikal Size Class — Regular, landshaftda iPhone SE dan tashqari. Gorizontal — portret va landshaft uchun har doim Compact (landshaftda Plus/Max dan tashqari).

iPad va Split View

iPad to'liq ekran rejimida — wRegular hRegular, maketga maksimal moslashuvchanlik beradi. Split View da xatti-harakat o'zgaradi: ilova 1/3 ekranni egallasa (Slide Over yoki 1/3 da Split), gorizontal Size Class Compact bo'ladi, vertikal esa Regular qoladi. 2/3 ekranda — wRegular hRegular. Dasturchi interfeysni Split View ning barcha rejimlarida sinab ko'rishi kerak, chunki Size Class dinamik o'zgaradi. Apple iPad da izchil xatti-harakat uchun Size Class ni UISplitViewController bilan birga ishlatishni tavsiya qiladi.

Tez-tez so'raladigan savollar

Size Class CSS dagi breakpoint dan nima bilan farq qiladi?

Size Class — 4 kombinatsiyali diskret tizim, CSS-breakpoint lar esa ixtiyoriy nuqtalarga ega uzluksiz tizimdir. Size Class qurilmalarni xatti-harakatiga ko'ra guruhlab, aniq ekran o'lchamlaridan abstraktsiya qiladi. CSS-breakpoint lar piksellarga bog'liq, Size Class — Compact/Regular mantiqiy toifalariga.

Nega iPhone Plus landshaftda Size Class gorizontal Regular?

iPhone Plus/Max landshaftda tarkibni ikki ustunda ko'rsatish uchun yetarli ekran kengligiga ega (iPad mini kabi). Apple dasturchi qo'shimcha tekshiruvlarsiz multi-column layout ishlatishi uchun gorizontal Regular ni tayinlaydi. Bu iPhone uchun Compact qoidasidan istisnodir.

Size Class ni dasturiy o'zgartirish mumkinmi?

Size Class iOS tomonidan qurilmaning haqiqiy xarakteristikalari asosida aniqlanadi va ilova kodidan o'zgartirilmaydi. Dasturchi faqat joriy qiymatga reaksiya berishi mumkin. System UI tizim elementlari uchun Size Class ni bekor qilishi mumkin, ammo ilovada bu mumkin emas.

Size Class SwiftUI bilan qanday ishlaydi?

SwiftUI Size Class dan to'g'ridan-to'g'ri foydalanmaydi — buning o'rniga dasturchi joriy qiymatni o'qish uchun @Environment(\.horizontalSizeClass) modifikatorlarini qo'llaydi. SwiftUI yuqori darajali vositalarni taklif qiladi: Size Classes va Layout protokoli bilan AnyLayout adaptiv maket uchun.

Tashqi monitor ulanganda Size Class yangilanadimi?

Ha, Stage Manager yoki Sidecar orqali tashqi displey ulanganda iOS Size Class ni yangilaydi. Tashqi monitor odatda wRegular hRegular oladi, asosiy ekran esa o'z Size Class ini saqlaydi. traitCollectionDidChange har bir ekranda oynalar uchun mustaqil chaqiriladi.

Xulosa

  • Size Class — har bir o'qda ikkita Compact/Regular qiymatiga ega iOS ekran tasnif tizimi, jami 4 kombinatsiya.
  • iPhone portretda — wCompact hRegular. To'liq ekran rejimida iPad — wRegular hRegular. iPhone Plus/Max landshaftda — wRegular hCompact.
  • Interface Builder har bir Size Class uchun constraint va ko'rinishni vizual sozlash uchun Vary for Traits ni taqdim etadi.
  • UITraitCollection — horizontalSizeClass va verticalSizeClass orqali Size Class ni o'qish uchun dasturiy API. O'zgarishlar traitCollectionDidChange da kuzatiladi.
  • iPad da Split View Size Class ni dinamik o'zgartiradi: 1/3 ekranda gorizontal Compact bo'ladi, maket moslashuvini talab qiladi.
  • SwiftUI Size Class ni o'qish uchun @Environment(\.horizontalSizeClass) va ish vaqtida maketlar orasida o'tish uchun AnyLayout ni taqdim etadi.
  • Tavsiya etiladi wAny hAny uchun maketdan boshlash, keyin wCompact hRegular (iPhone) va wRegular hRegular (iPad) ga moslashtirish, qolgan kombinatsiyalarni yuklamaslik.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing