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!")
}
}
Примечания
Литература
- Lee, Wei-meng. SwiftUI for dummies. — Hoboken : Wiley, 2020. — ISBN 978-1-119-65270-0.
- Cahill, Bear. UI Design for iOS App Development : [англ.]. — 2021. — ISBN 978-1-4842-6448-5. — doi:10.1007/978-1-4842-6449-2.
- Barker, Chris. Learn SwiftUI: An introductory guide to creating intuitive cross-platform user interfaces using Swift 5 : [англ.]. — Packt Publishing Ltd, 2020-04-03. — ISBN 978-1-83921-087-7.


