Azimjon Abdurasulov

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

  1. Points vs Pixels: Scale va NativeScale farqi
  2. 2026-yil sentabr liniyasi: iPhone va iPad ekran o'lchamlari
  3. ProMotion texnologiyasi: 1 Hz dan 120 Hz gacha
  4. Safe Area arxitekturasi va Dynamic Island
  5. Termal holat (Thermal State) va Low Power Mode
  6. Fon rejimida ishlash chegaralari (Background Execution)
  7. Apple Intelligence apparat talablari
  8. Xulosa
  9. 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 guruhiNuqtalar (Points)Piksellar (Pixels)MasshtabEkran xususiyati
iPhone Standard (6.1")$393 \times 852$$1179 \times 2556$@3xDynamic Island, 60 Hz
iPhone Plus (6.7")$430 \times 932$$1290 \times 2796$@3xDynamic Island, 60 Hz
iPhone Pro (6.3")$402 \times 874$$1206 \times 2622$@3xDynamic Island, ProMotion (120 Hz)
iPhone Pro Max (6.9")$440 \times 956$$1320 \times 2868$@3xDynamic Island, ProMotion (120 Hz)
iPhone Duo (2026)Tashqi va ichki bo'linganIkki displey@3xHinge (ochilish burchagi), tashqi displey
iPad Pro 11"$834 \times 1210$$1668 \times 2420$@2xProMotion, M-seriyali chip
iPad Pro 13"$1032 \times 1376$$2064 \times 2752$@2xProMotion, 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.top odatda 59 nuqta qilib belgilanadi.
  • Pastki Home indikatori uchun safeAreaInsets.bottom odatda 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:

  1. **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
    }
  }
}
  1. **Uzoq muddatli fon vazifalari (BGTaskScheduler):** Oflayn ma'lumotlar bazasini yangilash yoki ML modellarini qayta o'qitish uchun BGAppRefreshTask yoki BGProcessingTask rejalashtiriladi. 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 safeAreaLayoutGuide ga tayaniladi.
  • Qurilma qizib ketganda ProcessInfo.thermalState orqali yuklamani o'z vaqtida pasaytirish ilova barqarorligini ta'minlaydi.
  • Fonga o'tganda beginBackgroundTask orqali 30 sekunddan oshmagan ishlarni yakunlash mumkin, undan uzoq amallar uchun esa BGTaskScheduler talab etiladi.

Manbalar {#manbalar}

  1. Human Interface Guidelines: Layout — Apple
  2. ProcessInfo.ThermalState — Apple Documentation
  3. Optimizing ProMotion Refresh Rates — Apple
  4. Using Background Tasks — Apple Developer

Markdown manba

iOS Lessons