SwiftUI

SwiftUI — декларативный каркас[1] для создания пользовательских интерфейсов под iOS, iPadOS, watchOS, tvOS, visionOS и macOS, разрабатываемый компанией Apple Inc. для языка программирования Swift.

Что важно знать
SwiftUI
Тип Программный каркас
Разработчик Apple Inc.
Написана на Swift
Операционные системы iOS, iPadOS, macOS, tvOS, watchOS, visionOS
Первый выпуск 3 июня 2019
Лицензия проприетарная
Сайт developer.apple.com/swif…

Обзор

SwiftUI реализует декларативный подход, в отличие от императивного синтаксиса, используемого в других каркасах Apple, таких как UIKit и AppKit. С помощью SwiftUI можно осуществлять 2D-рисование, создавать анимации, обрабатывать события, разрабатывать виджеты и использовать привязку данных. Каркас автоматически синхронизирует данные и элементы интерфейса[2].

SwiftUI интегрируется с другими технологиями Apple, такими как Xcode и Swift Playgrounds, что позволяет работать с предпросмотром интерфейса в реальном времени во время редактирования[3],[4], а также поддерживает отладку и прочие функции для разработчиков.

SwiftUI поддерживает взаимодействие с UIKit и AppKit посредством протоколов UIViewRepresentable и NSViewRepresentable соответственно[5][6].

История

SwiftUI был представлен на конференции WWDC компании Apple 3 июня 2019 года и добавлен в iOS 13 и macOS Catalina[1].

Во время WWDC 2020 и релиза iOS 14 Apple реализовала нативную поддержку карт с помощью компонента Map с интерфейсом, построенным на базе Apple Maps через MapKit[7]. MapKit позволяет применять аннотации и спутниковые снимки на картах.

На WWDC 2021 и во время выхода iOS 15 компания внедрила элемент Canvas, обеспечив поддержку Immediate mode-рисования и производительного 2D-отображения[8].

На WWDC 2022 и вместе с релизом iOS 16 Apple представила Swift Charts — каркас для построения настраиваемых и доступных диаграмм[9].

На WWDC 2023 была анонсирована Apple Vision Pro, и поддержка этого устройства была добавлена в SwiftUI, помимо новых представлений для AR-контента, таких как RealityView и ImmersiveSpace[10].

Примеры

Ниже представлен пример простейшей программы «Hello, World!». Атрибут @main указывает точку входа в приложение. В SwiftUI стандартной практикой считается разделять структуру приложения и представления на разные структуры в соответствии с архитектурным паттерном Model-View-ViewModel (MVVM)[11].

import SwiftUI

@main
struct AnApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {
    var body: some View {
        Text("Hello, World!")
    }
}

Примечания

Литература