UIKit 5: Apple qurilmalari arxitekturasi — Points, Pixels, ProMotion va Dynamic Island
📱 UIKit va SwiftUI — chuqur
UIKit 5: Apple qurilmalari arxitekturasi — Points, Pixels, ProMotion va Dynamic Island
Holat: 2026-yil sentabr. Professional iOS dasturchisi apparat ta'minoti va operatsion tizim resurslarini chuqur his qilishi kerak. Ekranning piksellari qanday hisoblanadi? ProMotion displeyida qachon kadrlar tushib qoladi? Qurilma qizib ketganda (Thermal Throttling) nima qilish lozim? Ushbu darsda Apple qurilmalari arxitekturasi, ekran o'lchamlari, Dynamic Island, batareya va fon cheklovlari tahlil qilinadi.
Mundarija
- Points vs Pixels: Scale va NativeScale farqi
- 2026-yil sentabr liniyasi: iPhone va iPad ekran o'lchamlari
- ProMotion texnologiyasi: 1 Hz dan 120 Hz gacha
- Safe Area arxitekturasi va Dynamic Island
- Termal holat (Thermal State) va Low Power Mode
- Fon rejimida ishlash chegaralari (Background Execution)
- Apple Intelligence apparat talablari
- Xulosa
- Manbalar
1. Points vs Pixels: Scale va NativeScale farqi](#points-pixels)
iOS interfeysida barcha o'lchamlar Nuqtalarda (Points / pt) o'lchanadi. Apparat ekrani esa Piksellarda (Pixels / px) ishlaydi:
$$\text{Pixels} = \text{Points} \times \text{Scale}$$
- 1x (@1x): Dastlabki eski iPhone va iPad'lar ($1\text{ pt} = 1\text{ px}$). Bugungi kunda deyarli uchramaydi.
- 2x (@2x): Standart Retina displeylar ($1\text{ pt} = 2 \times 2 = 4\text{ px}$).
- 3x (@3x): Super Retina XDR OLED displeylari ($1\text{ pt} = 3 \times 3 = 9\text{ px}$).
Scale va NativeScale o'rtasidagi farq:
Tarixiy misol: iPhone 6 Plus, 7 Plus va 8 Plus qurilmalarida UIKit ilovani virtual $414 \times 736\text{ pt}$ (@3x, ya'ni $1242 \times 2208\text{ px}$) sifatida render qilib, so'ng apparat darajasida haqiqiy 1080p ($1080 \times 1920\text{ px}$) panelga kichraytirgan (downsampling). Bunday paytda UIScreen.main.scale $3.0$ bo'lgan, nativeScale esa taxminan $2.608$ ni tashkil etgan.
Zamonaviy OLED qurilmalarda esa (iPhone 13 Pro dan to eng so'nggi modellargacha) piksellar to'g'ridan-to'g'ri nuqtalarga mos:
- O'lchangan fakt: iPhone 17 Pro Max simulyatorida
bounds = (440.0, 956.0),scale = 3.0,nativeScale = 3.0(haqiqiy panel $1320 \times 2868\text{ px}$).
2. 2026-yil sentabr liniyasi: iPhone va iPad ekran o'lchamlari {#device-matrix}
2026-yil sentabr holatiga ko'ra ishlab chiquvchilar hisobga olishi lozim bo'lgan asosiy parametrlar:
| Qurilma guruhi | Nuqtalar (Points) | Piksellar (Pixels) | Masshtab | Ekran xususiyati |
|---|---|---|---|---|
| iPhone Standard (6.1") | $393 \times 852$ | $1179 \times 2556$ | @3x | Dynamic Island, 60 Hz |
| iPhone Plus (6.7") | $430 \times 932$ | $1290 \times 2796$ | @3x | Dynamic Island, 60 Hz |
| iPhone Pro (6.3") | $402 \times 874$ | $1206 \times 2622$ | @3x | Dynamic Island, ProMotion (120 Hz) |
| iPhone Pro Max (6.9") | $440 \times 956$ | $1320 \times 2868$ | @3x | Dynamic Island, ProMotion (120 Hz) |
| iPhone Duo (2026) | Tashqi va ichki bo'lingan | Ikki displey | @3x | Hinge (ochilish burchagi), tashqi displey |
| iPad Pro 11" | $834 \times 1210$ | $1668 \times 2420$ | @2x | ProMotion, M-seriyali chip |
| iPad Pro 13" | $1032 \times 1376$ | $2064 \times 2752$ | @2x | ProMotion, Tandem OLED |
3. ProMotion texnologiyasi: 1 Hz dan 120 Hz gacha {#promotion}
ProMotion displeylar batareya quvvatini tejash maqsadida yangilanish tezligini dinamik o'zgartiradi:
- Harakatsiz matn o'qilganda: 10 Hz (Always-On rejimida 1 Hz).
- Oddiy aylantirishda: 60 Hz–90 Hz.
- Tezkor o'yinlar va interfeys animatsiyalarida: 120 Hz ($8.3\text{ ms}$ har bir freym).
Agar ilovangizda kadrlar sakramay (jank bo'lmay) silliq o'tishi kerak bo'lsa, CADisplayLink orqali kerakli chastota diapazonini belgilash mumkin:
import QuartzCore
import UIKit
public final class DisplayFPSManager {
private var displayLink: CADisplayLink?
public func configureHighRefreshRate(target: AnyObject, selector: Selector) {
displayLink = CADisplayLink(target: target, selector: selector)
displayLink?.preferredFrameRateRange = CAFrameRateRange(
minimum: 60,
maximum: 120,
preferred: 120
)
displayLink?.add(to: .main, forMode: .common)
}
}
4. Safe Area arxitekturasi va Dynamic Island {#safe-area}
Interfeys elementlari karnay, kamera yoki burchaklar ortiga yashirinib qolmasligi uchun UIKit'da Safe Area tushunchasi mavjud:
- **
safeAreaInsets:** View'ning chetlaridan xavfsiz bo'shliqlar (top,bottom,left,right). - Dynamic Island: iPhone'ning yuqori qismidagi Dynamic Island maydoni uchun
safeAreaInsets.topodatda 59 nuqta qilib belgilanadi. - Pastki Home indikatori uchun
safeAreaInsets.bottomodatda 34 nuqta bo'ladi.
Auto Layout'da doimo view.safeAreaLayoutGuide ga bog'lash lozim:
import UIKit
@MainActor
func setupHeaderLayout(headerView: UIView, in controller: UIViewController) {
headerView.translatesAutoresizingMaskIntoConstraints = false
controller.view.addSubview(headerView)
NSLayoutConstraint.activate([
headerView.topAnchor.constraint(equalTo: controller.view.safeAreaLayoutGuide.topAnchor),
headerView.leadingAnchor.constraint(equalTo: controller.view.leadingAnchor),
headerView.trailingAnchor.constraint(equalTo: controller.view.trailingAnchor),
headerView.heightAnchor.constraint(equalToConstant: 60)
])
}
5. Termal holat (Thermal State) va Low Power Mode {#thermal}
Qurilma uzoq vaqt og'ir yuk ostida ishlaganda (masalan, 3D render, video tahrirlash yoki AI hisob-kitoblari), protsessor qiziydi va iOS apparatni himoya qilish uchun chastotani majburiy tushiradi (Thermal Throttling).
Dasturchi buni ProcessInfo orqali kuzatishi shart:
import UIKit
@MainActor
public func monitorThermalAndPowerState() {
let thermal = ProcessInfo.processInfo.thermalState
switch thermal {
case .nominal:
// Hammasi a'lo
break
case .fair:
// Harorat biroz oshgan
break
case .serious:
// Diqqat: Fon vazifalarini to'xtatish, FPS'ni 60 ga cheklash lozim
break
case .critical:
// Favqulodda: Barcha animatsiyalarni o'chirish, video sifatini pasaytirish
break
@unknown default:
break
}
if ProcessInfo.processInfo.isLowPowerModeEnabled {
// Low Power Mode yoqilgan: ekran avtomatik 60 Hz ga tushiriladi
}
}
6. Fon rejimida ishlash chegaralari (Background Execution) {#background}
iOS batareyani saqlash bo'yicha juda qattiqqo'l tizimdir. Foydalanuvchi ilovadan chiqqanda:
- **Vaqtinchalik fon amali (
beginBackgroundTask): Ilova fonga o'tgan zahoti tarmoq so'rovini yoki fayl saqlashni yakunlash uchun tizimdan vaqt so'rashi mumkin. Apple bunga odatda maksimal 30 sekund** beradi. Vaqt tugagach ilova darhol to'xtatiladi (suspend).
import UIKit
@MainActor
public final class BackgroundSyncManager {
private var taskID: UIBackgroundTaskIdentifier = .invalid
public func performQuickSync() {
taskID = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endTask()
}
// Fon vazifasini bajarish:
Task {
try? await Task.sleep(nanoseconds: 2_000_000_000)
self.endTask()
}
}
private func endTask() {
if taskID != .invalid {
UIApplication.shared.endBackgroundTask(taskID)
taskID = .invalid
}
}
}
- **Uzoq muddatli fon vazifalari (
BGTaskScheduler):** Oflayn ma'lumotlar bazasini yangilash yoki ML modellarini qayta o'qitish uchunBGAppRefreshTaskyokiBGProcessingTaskrejalashtiriladi. Ular faqat qurilma quvvatga ulanganda va Wi-Fi mavjud bo'lganda tizim xohlagan vaqtda ishga tushiriladi.
7. Apple Intelligence apparat talablari {#apple-intelligence}
2026-yilgi Apple ekotizimida sun'iy intellekt (Foundation Models) qurilmaning o'zida ishlashi uchun qat'iy apparat chegarasi o'rnatilgan:
- Xotira: Kamida 8 GB RAM (operativ xotira).
- Chip: Kamida A17 Pro (iPhone 15 Pro va undan keyingilar) yoki M1/M2/M3/M4 (iPad va Mac).
- Standart iPhone 15 va undan oldingi 6 GB RAM'li modellar lokal AI modellarini ko'tara olmaydi.
8. Xulosa {#xulosa}
- Nuqtalar (Points) mantiqiy dizayn birligi bo'lsa, piksellar jismoniy ekran panelining elementidir.
- ProMotion ekranlarida (120 Hz) kadrlar silliq bo'lishi uchun har bir freym $8.3\text{ ms}$ dan oshmasligi kerak.
- Dynamic Island va Home Bar bilan to'g'ri ishlash uchun doimo
safeAreaLayoutGuidega tayaniladi. - Qurilma qizib ketganda
ProcessInfo.thermalStateorqali yuklamani o'z vaqtida pasaytirish ilova barqarorligini ta'minlaydi. - Fonga o'tganda
beginBackgroundTaskorqali 30 sekunddan oshmagan ishlarni yakunlash mumkin, undan uzoq amallar uchun esaBGTaskSchedulertalab etiladi.