# 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](#points-pixels)
2. [2026-yil sentabr liniyasi: iPhone va iPad ekran o'lchamlari](#device-matrix)
3. [ProMotion texnologiyasi: 1 Hz dan 120 Hz gacha](#promotion)
4. [Safe Area arxitekturasi va Dynamic Island](#safe-area)
5. [Termal holat (Thermal State) va Low Power Mode](#thermal)
6. [Fon rejimida ishlash chegaralari (Background Execution)](#background)
7. [Apple Intelligence apparat talablari](#apple-intelligence)
8. [Xulosa](#xulosa)
9. [Manbalar](#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:

```swift
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:

```swift
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:

```swift
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).

```swift
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
    }
  }
}
```

2. **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](https://developer.apple.com/design/human-interface-guidelines/layout)
2. [ProcessInfo.ThermalState — Apple Documentation](https://developer.apple.com/documentation/foundation/processinfo/thermalstate)
3. [Optimizing ProMotion Refresh Rates — Apple](https://developer.apple.com/documentation/quartzcore/optimizing_promotion_refresh_rates_for_iphone_13_pro_and_ipad_pro)
4. [Using Background Tasks — Apple Developer](https://developer.apple.com/documentation/backgroundtasks)
