Ответ
SwiftUI — это современный декларативный фреймворк Apple для построения пользовательских интерфейсов на всех её платформах (iOS, macOS, watchOS, tvOS) с использованием синтаксиса Swift.
Ключевые принципы и особенности:
- Декларативный синтаксис: Вы описываете, как должен выглядеть UI в зависимости от состояния данных, а не последовательность команд для его изменения (как в императивном UIKit).
- Единый код для всех платформ: Одно описание интерфейса адаптируется под идиомы каждой платформы (iOS, macOS и т.д.).
- Реактивность на основе состояния: UI автоматически перерисовывается при изменении связанных с ним данных, помеченных как
@State,@ObservedObject,@StateObjectи др.
Базовый пример:
import SwiftUI
struct ContentView: View {
// @State — свойство-источник истины, при его изменении View пересоздается
@State private var counter = 0
var body: some View {
VStack {
Text("Счётчик: \(counter)")
.font(.title)
Button("Увеличить") {
counter += 1 // Изменение состояния -> автоматическое обновление Text
}
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
}
}
Преимущества перед UIKit:
- Меньше кода: Отсутствие boilerplate-кода (например, не нужны делегаты для таблиц).
- Live Preview в Xcode: Мгновенный предпросмотр изменений без запуска симулятора.
- Автоматическая доступность: Многие компоненты из коробки поддерживают динамический тип шрифта, темную тему и VoiceOver.
Ограничения:
- Требует iOS 13+ / macOS 10.15+.
- Некоторые сложные или специфичные UI-компоненты могут отсутствовать и требовать интеграции с UIKit (
UIViewRepresentable).