SwiftUI — это декларативный фреймворк от Apple для создания пользовательских интерфейсов на всех платформах Apple (iOS, macOS, watchOS, tvOS). Представлен в 2019 году как современная альтернатива UIKit/AppKit.
Ключевые особенности:
Вы описываете что должно быть в интерфейсе, а не как это реализовать:
VStack {
Text("Привет, мир!")
.font(.title)
Button(action: { print("Нажато") }) {
Text("Кнопка")
}
}
Интерфейс строится из модифицируемых компонентов (View):
struct ContentView: View {
var body: some View {
Image(systemName: "star.fill")
.foregroundColor(.yellow)
.font(.system(size: 50))
}
}
Автоматическое обновление UI при изменении данных:
struct CounterView: View {
@State private var count = 0
var body: some View {
Button("Нажато \(count) раз") {
count += 1
}
}
}
Скорость разработки:
Современный синтаксис:
Автоматическая адаптация:
@State
- локальное состояние View@ObservedObject
- внешний источник данных@EnvironmentObject
- глобальные данныеHStack
/VStack
/ZStack
- контейнерыList
/ScrollView
- скроллящиеся viewGrid
(iOS 16+) - современные сеткиВстроенные эффекты с минимальным кодом:
@State private var isAnimating = false
Circle()
.scaleEffect(isAnimating ? 1.5 : 1.0)
.animation(.easeInOut(duration: 0.5), value: isAnimating)
UIKit/AppKit:
UIViewRepresentable
для встраивания UIKitUIViewControllerRepresentable
для контроллеровCore Data:
@FetchRequest
для работы с базойCombine:
struct WeatherApp: View {
@StateObject var model = WeatherModel()
var body: some View {
NavigationStack {
List(model.forecast) { day in
HStack {
Text(day.name)
Spacer()
Text(day.temperature)
}
}
.navigationTitle("Погода")
.refreshable {
await model.loadData()
}
}
}
}
SwiftUI — это современный, декларативный фреймворк для построения интерфейсов, который значительно ускоряет разработку, обеспечивает единый код для всех платформ Apple и предлагает принципиально новый подход к созданию UI через реактивное программирование и модификаторы.