# UIKit 6: iOS 26 va iOS 27 yangiliklari — Liquid Glass, Yangi API va qoidalar

> **Holat:** 2026-yil sentabr. Har yili Apple o'zining dizayn tili va xavfsizlik talablarini yangilaydi. iOS 26 bilan yangi avlod **Liquid Glass** vizual arxitekturasi va `updateProperties` kiritilgan bo'lsa, iOS 27 da Toolbar boshqaruvi, "iPhone Duo" ikki ekranli apparat API'lari va `UIScene` majburiyati e'lon qilindi. Ushbu darsda 2026-yilgi eng so'nggi API o'zgarishlari va App Store qoidalari tahlil qilinadi.

## Mundarija

1. [Liquid Glass arxitekturasi: UIGlassEffect va shisha tugmalar](#liquid-glass)
2. [SwiftUI'da Liquid Glass: GlassEffectContainer](#swiftui-glass)
3. [Toolbar va minimizatsiya evolyutsiyasi (iOS 26 -> 27)](#toolbar-minimization)
4. [iPhone Duo va September 2026 apparat klasteri](#iphone-duo)
5. [Xcode 27: @State makrosi va @ContentBuilder (TN3211)](#state-contentbuilder)
6. [AsyncImage avtomatik HTTP kesh va yangi hujjatlar](#async-image-docs)
7. [App Store talablari: Launch Screen va UIScene](#app-store-rules)
8. [Xulosa](#xulosa)
9. [Manbalar](#manbalar)

---

## 1. Liquid Glass arxitekturasi: UIGlassEffect va shisha tugmalar {#liquid-glass}

Apple iOS 26.0 da yangi vizual dizayn tili — **Liquid Glass** tizimini taqdim etdi ([sdk_facts.md](file:///Users/codingtech/Documents/GitHub/azimjondev.uz/lessons-handoff/research-uikit/sdk_facts.md)):

- **`UIGlassEffect`:** `@MainActor` sinfi bo'lib, zamonaviy shishasimon dinamik materialni render qiladi (`UIGlassEffect.Style.regular` va `.clear`).
- **`UIGlassContainerEffect`:** Bir nechta shisha elementlarni yagona umumiy qatlamda birlashtirib, GPU sarfini optimallashtiradi.
- **`UIButton.Configuration.glass()`:** Tizim bilan hamohang shaffof tugmalar konfiguratsiyasi.

Quyidagi Swift kodi iOS 26 SDK da to'liq kompilyatsiya qilinadi:

```swift
import UIKit

@available(iOS 26.0, *)
@MainActor
public func createLiquidGlassInterface() -> UIView {
  // Bir nechta shisha elementlar uchun konteyner:
  let containerView = UIVisualEffectView(effect: UIGlassContainerEffect())

  // Interaktiv Liquid Glass effekti:
  let glassEffect = UIGlassEffect(style: .regular)
  glassEffect.isInteractive = true

  let effectView = UIVisualEffectView(effect: glassEffect)
  containerView.contentView.addSubview(effectView)

  // Yangi shisha tugma:
  var config = UIButton.Configuration.glass()
  config.title = "Liquid Glass"
  let button = UIButton(configuration: config)
  containerView.contentView.addSubview(button)

  return containerView
}
```

---

## 2. SwiftUI'da Liquid Glass: GlassEffectContainer {#swiftui-glass}

SwiftUI'da ham parallel ravishda iOS 26.0 dan boshlab quyidagi API'lar taqdim etildi:
- `.glassEffect(_:in:)` modifier'i;
- `GlassEffectContainer` ko'rinishi;
- `PrimitiveButtonStyle.glass` va `.glassProminent`.

```swift
import SwiftUI

@available(iOS 26.0, *)
struct GlassCardView: View {
  var body: some View {
    GlassEffectContainer {
      VStack(spacing: 12) {
        Text("Liquid Glass Karta")
          .font(.headline)
        Button("Tasdiqlash") {}
          .buttonStyle(.glass)
      }
      .padding(24)
    }
  }
}
```

---

## 3. Toolbar va minimizatsiya evolyutsiyasi (iOS 26 -> 27) {#toolbar-minimization}

iOS 26 da foydalanuvchi scroll qilganda panelni kichraytirish uchun `toolbarMinimizeBehavior` taklif etilgan edi. Biroq Apple iOS 27 da ushbu nomlarni standartlashtirdi ([iOS 27 Release Notes](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-27-release-notes)):

### 1. SwiftUI o'zgarishi:
`toolbarMinimizationBehavior(_:for:)` modifier'i avvalgi `toolbarMinimizeBehavior` o'rniga keldi:

```text
// iOS 27 SDK (Xcode 27) — Apple manbasidan
// https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-27-release-notes
content
  .toolbarMinimizationBehavior(.collapsible, for: .navigationBar)
```

### 2. UIKit o'zgarishi:
`UINavigationItem.navigationBarMinimization` xususiyati eski `barMinimizeBehavior` va `barMinimizationSafeAreaAdjustment` o'rniga yagona standart bo'ldi:

```text
// iOS 27 SDK (Xcode 27) — Apple manbasidan
// https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-27-release-notes
navigationItem.navigationBarMinimization = .collapsible
```

Shuningdek, iOS 27 da `UITabBarController.prominentTabIdentifier` (markaziy ajralib turuvchi tab) va `UITabBarController.Sidebar.preferredPlacement` qo'shildi.

---

## 4. iPhone Duo va September 2026 apparat klasteri {#iphone-duo}

Apple'ning rasmiy [SwiftUI Updates](https://developer.apple.com/documentation/updates/swiftui) sahifasida 2026-yil sentabr oyida birinchi marta buklanuvchi ikki ekranli apparat — **"iPhone Duo"** nomi ochiq tasdiqlandi:

```text
// iOS 27 SDK (Xcode 27) — Apple manbasidan
// https://developer.apple.com/documentation/updates/swiftui

// 1. Ekranlar orasidagi burchak (Hinge) holatini kuzatish:
.onHingeChange(isEnabled: true) { hingeContext in
  switch hingeContext.state {
  case .closed:
    print("Yopiq rejim")
  case .partiallyOpen:
    print("Burchak ostida yarim ochiq (Laptop rejimi)")
  case .fullyOpen:
    print("To'liq tekis yoyilgan")
  @unknown default:
    break
  }
}

// 2. Tashqi yordamchi ekranda kontent chiqarish:
CameraCaptureAccessory {
  Text("Tashqi displey ko'rinishi")
}
```

Ikki displeyli tartibni boshqarish uchun `ArrangementView` (`.split` va `.overlay`) hamda apparat to'siqlari uchun `ReservedRegion` (`.occlusion`, `.division`) taqdim etildi.

---

## 5. Xcode 27: @State makrosi va @ContentBuilder (TN3211) {#state-contentbuilder}

Apple ishlab chiquvchilar uchun texnik hisobotida ([TN3211](https://developer.apple.com/documentation/technotes/tn3211-resolving-swiftui-source-incompatibilities-for-state-and-contentbuilder)) ikkita katta me'moriy yangilikni e'lon qildi:

1. **`@State` makrosi yangilanishi:**
   SwiftUI `@State` endi ichki Property Wrapper emas, Swift Syntax Makrosi sifatida qayta yozildi. Eng katta xushxabar: **ushbu makro kompilyatsiya darajasida iOS 17 gacha back-deploy qilinadi**, ya'ni ishlab chiqarishda yangi xususiyatdan foydalanish uchun foydalanuvchida iOS 27 bo'lishi shart emas!
2. **`@ContentBuilder` birlashuvi:**
   Ilgari alohida bo'lgan `ViewBuilder`, `ToolbarContentBuilder` va `CommandsBuilder` protokollari endi yagona `@ContentBuilder` ostida birlashtirildi. Natijada Xcode 27 da SwiftUI kodini kompilyatsiya qilish va tip tekshirish tezligi sezilarli darajada oshdi.

---

## 6. AsyncImage avtomatik HTTP kesh va yangi hujjatlar {#async-image-docs}

- **`AsyncImage` keshlash:** iOS 27 gacha `AsyncImage` rasmlarni xotirada keshlamas, har marta qayta so'rov yuborar edi (shuning uchun Nuke yoki Kingfisher ishlatilar edi). iOS 27 da `AsyncImage` ga **avtomatik HTTP kesh** qo'shildi va maxsus sessiya ulash uchun `asyncImageURLSession(_:)` modifier'i taqdim etildi ([iOS 27 Release Notes](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-27-release-notes)).
- **Hujjatlar arxitekturasi:** Eski `FileDocument` va `ReferenceFileDocument` protokollari rasman **deprecated** qilindi, o'rniga yagona `WritableDocument` / `ReadableDocument` / `Document` tizimi joriy etildi.

---

## 7. App Store talablari: Launch Screen va UIScene {#app-store-rules}

iOS 27 SDK (Xcode 27) bilan ilovani App Store'ga topshirishda quyidagi ikki qat'iy talab joriy qilindi:

1. **Launch Screen bo'lishi shart:**
   Ilovaning `Info.plist` faylida quyidagi 4 ta kalitdan kamida bittasi mavjud bo'lishi shart, aks holda App Store Connect yig'mani qabul qilmaydi:
   - `UILaunchStoryboardName`
   - `UILaunchStoryboards`
   - `UILaunchScreen`
   - `UILaunchScreens`
2. **UIScene lifecycle majburiyati:**
   iOS 27 SDK da eski AppDelegate hayot sikli bilan yig'ilgan ilovalar qurilmada ishga tushmaydi ("fail to launch"). Har qanday yangi ilova `UIScene` va `UIWindowScene` arxitekturasiga o'tgan bo'lishi shart ([/ios-lessons/uikit-vc-lifecycle#ui-scene](/ios-lessons/uikit-vc-lifecycle#ui-scene)).

---

## 8. Xulosa {#xulosa}

- iOS 26 da `UIGlassEffect` va `.glass` uslubidagi tugmalar bilan Liquid Glass dizayn tili boshlandi.
- iOS 27 da toolbar boshqaruvi `toolbarMinimizationBehavior` va `navigationBarMinimization` ko'rinishida standartlashtirildi.
- "iPhone Duo" apparatining e'lon qilinishi bilan `DeviceHinge` va `ArrangementView` ikki ekranli rejimlar uchun asosiy vositaga aylandi.
- Xcode 27 dagi yangi `@State` makrosi iOS 17 gacha moslashuvchan, `@ContentBuilder` esa kompilyatsiya tezligini oshiradi.
- `AsyncImage` ga rasmiy kesh qo'shildi, App Store esa Launch Screen va UIScene mavjudligini qat'iy tekshiradi.

---

## Manbalar {#manbalar}

1. [iOS & iPadOS 27 Release Notes — Apple Developer](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-27-release-notes)
2. [iOS & iPadOS 26 Release Notes — Apple Developer](https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26-release-notes)
3. [SwiftUI Updates (Official Changelog) — Apple](https://developer.apple.com/documentation/updates/swiftui)
4. [TN3211: Resolving SwiftUI Incompatibilities for State and ContentBuilder](https://developer.apple.com/documentation/technotes/tn3211-resolving-swiftui-source-incompatibilities-for-state-and-contentbuilder)
5. [UIGlassEffect API Reference — Apple](https://developer.apple.com/documentation/uikit/uiglasseffect)
