Azimjon Abdurasulov

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

📱 UIKit va SwiftUI — chuqur

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
  2. SwiftUI'da Liquid Glass: GlassEffectContainer
  3. Toolbar va minimizatsiya evolyutsiyasi (iOS 26 -> 27)
  4. iPhone Duo va September 2026 apparat klasteri
  5. Xcode 27: @State makrosi va @ContentBuilder (TN3211)
  6. AsyncImage avtomatik HTTP kesh va yangi hujjatlar
  7. App Store talablari: Launch Screen va UIScene
  8. Xulosa
  9. 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):

  • **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:

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.
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):

1. SwiftUI o'zgarishi:

toolbarMinimizationBehavior(_:for:) modifier'i avvalgi toolbarMinimizeBehavior o'rniga keldi:

// 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:

// 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 sahifasida 2026-yil sentabr oyida birinchi marta buklanuvchi ikki ekranli apparat — "iPhone Duo" nomi ochiq tasdiqlandi:

// 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) 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).
  • 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:
  2. UILaunchStoryboardName
  3. UILaunchStoryboards
  4. UILaunchScreen
  5. UILaunchScreens
  6. 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).

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
  2. iOS & iPadOS 26 Release Notes — Apple Developer
  3. SwiftUI Updates (Official Changelog) — Apple
  4. TN3211: Resolving SwiftUI Incompatibilities for State and ContentBuilder
  5. UIGlassEffect API Reference — Apple

Markdown manba

iOS Lessons