encyklopedia.space

UIKit

UIKit – biblioteka programistyczna (framework) firmy Apple, która dostarcza zestaw gotowych komponentów interfejsu użytkownika oraz API do ich obsługi w systemach iOS, iPadOS, macOS (od wersji Catalyst) oraz tvOS. Dzięki UIKit programiści mogą tworzyć aplikacje o spójnym wyglądzie i zachowaniu, zgodne z wytycznymi Human Interface Guidelines (HIG) Apple.

Historia

Biblioteka została wprowadzona po raz pierwszy w 2009 roku wraz z premierą iPhone'a i systemem iPhone OS 1. Od tego czasu UIKit ewoluował, wprowadzając wsparcie dla kolejnych urządzeń i wersji systemu:

  • 2010 – wprowadzenie UICollectionView w iOS 4.
  • 2011 – udostępnienie Auto Layout w Xcode 4.2.
  • 2014 – pojawienie się Swift, nowego języka programowania, który od tej pory jest dominującym językiem przy tworzeniu aplikacji z użyciem UIKit.
  • 2019 – wprowadzenie SwiftUI jako alternatywy dla UIKit, ale jednocześnie zachowanie pełnej kompatybilności pomiędzy oboma frameworkami.

Architektura i podstawowe pojęcia

UIKit opiera się na kilku kluczowych elementach:

UIView
Podstawowy obiekt reprezentujący prostokątny obszar ekranu. Wszystkie widoki graficzne, kontrolki i kontenery dziedziczą po tej klasie.
UIViewController
Obiekt zarządzający hierarchią widoków oraz cyklem życia użytkownika w ramach jednej sceny aplikacji.
UIResponder
Klasa bazowa dla obiektów obsługujących zdarzenia dotykowe, gesty i inne interakcje użytkownika.
Auto Layout
System reguł opisujących zależności pomiędzy elementami interfejsu, umożliwiający dynamiczne dostosowywanie układu do różnych rozmiarów ekranu.
Interface Builder
Graficzne narzędzie w Xcode umożliwiające projektowanie interfejsu przy użyciu storyboardów i plików NIB/XIB.

Najważniejsze komponenty

UIKit dostarcza szeroką gamę gotowych kontrolek, które można wykorzystać w aplikacjach:

Cykl życia aplikacji i widoków

W UIKit istnieje jasno określony cykl życia obiektów, co ułatwia kontrolę nad zasobami i stanem UI:

  1. loadView() – tworzenie podstawowego widoku kontrolera.
  2. viewDidLoad() – wykonywane po załadowaniu widoku; miejsce na początkową konfigurację.
  3. viewWillAppear(_:) oraz viewDidAppear(_:) – wywoływane przed i po pojawieniu się widoku na ekranie.
  4. viewWillDisappear(_:) oraz viewDidDisappear(_:) – wywoływane przed i po usunięciu widoku z ekranu.

Integracja z innymi technologiami Apple

UIKit współpracuje z wieloma innymi frameworkami:

  • Core Animation – animacje warstw (CALayer) używane przez UIKit do płynnych przejść.
  • Core Graphics – rysowanie wektorowe i bitmapowe.
  • Core Data – persystencja danych, często wykorzystywana w połączeniu z kontrolkami tabelarycznymi.
  • Combine – reaktywny framework, którego strumienie można łączyć z zdarzeniami UI.
  • SwiftUI – nowoczesny deklaratywny język UI; można go mieszać z UIKit przy pomocy UIHostingController.

Przykładowy kod

import UIKit

class MyViewController: UIViewController {
    private let button: UIButton = {
        let b = UIButton(type: .system)
        b.setTitle("Kliknij mnie", for: .normal)
        b.translatesAutoresizingMaskIntoConstraints = false
        return b
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        view.addSubview(button)

        NSLayoutConstraint.activate([
            button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
        ])

        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
    }

    @objc private func buttonTapped() {
        let alert = UIAlertController(title: "Uwaga",
                                      message: "Przycisk został kliknięty.",
                                      preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default))
        present(alert, animated: true)
    }
}

Zastosowania i znaczenie

UIKit jest podstawą praktycznie każdej natywnej aplikacji na platformach Apple. Dzięki temu frameworkowi deweloperzy mogą szybko prototypować interfejsy, zapewniając jednocześnie zgodność z wytycznymi HIG oraz wysoką wydajność. Jego długotrwałe wsparcie, rozbudowany ekosystem oraz kompatybilność z językiem Swift i starszym Objective‑C utrzymują UIKit w czołówce technologii mobilnych.

Porównanie z SwiftUI

Od 2019 roku Apple promuje SwiftUI jako nowoczesną alternatywę dla UIKit. Kluczowe różnice:

Cecha UIKit SwiftUI
Paradygmat Imperatywny (kod definiuje kolejność działań) Deklaratywny (opis stanu UI)
Wsparcie systemowe iOS 2 – obecnie, macOS 10.9 – obecnie iOS 13 – obecnie, macOS 10.15 – obecnie
Learning curve Stromy, wymaga znajomości Auto Layout, delegatów itp. Łatwiejszy dla nowych programistów, szczególnie w Swift.
Integracja z istniejącym kodem Pełna kompatybilność z legacy code Można mieszać przy pomocy UIHostingController i UIViewRepresentable.

Patenty i licencja

UIKit jest własnością Apple i jest udostępniany programistom w ramach programu Apple Developer. Korzystanie z frameworku wymaga akceptacji warunków licencji Apple oraz korzystania z oficjalnych narzędzi, takich jak Xcode.

Patrząc w przyszłość

Choć SwiftUI zdobywa coraz większą popularność, UIKit pozostaje fundamentem ekosystemu aplikacji Apple. W kolejnych wersjach systemu przewiduje się dalsze udoskonalenia interfejsu API, lepszą współpracę z technologią ARKit oraz rozszerzone wsparcie dla urządzeń z procesorami Apple Silicon.