Всем привет! Сегодня разберем
@ViewBuilder - один из ключевых механизмов
SwiftUI, который делает наш код таким лаконичным и выразительным.
Что такое @ViewBuilder:
Это специальный атрибут, который превращает несколько
View в одну иерархию. Благодаря ему мы пишем так:
VStack {
Text("Привет")
Button("Нажми меня") {
// Действие
}
Image(systemName: "apple.logo")
}
Вместо такого кошмара:
VStack(content: {
TupleView(
Text("Привет"),
Button("Нажми меня") {
// Действие
},
Image(systemName: "swift")
)
})
Как это работает:
Автоматическая упаковка:
@ViewBuilder преобразует список вьюх в
TupleView (для 2-10 элементов) или
Group (если их больше).
Поддержка условий:
Может обрабатывать
if,
if let,
switch:
@ViewBuilder
func header(isLoggedIn: Bool) -> some View {
if isLoggedIn {
Text("Добро пожаловать!")
} else {
Button("Войти") {
// Действие
}
}
}
Ограничения:
- Нельзя использовать for напрямую (нужен ForEach).
- Максимум 10 вьюх в одном блоке (но это ограничение обходится).
Продвинутые фишки:
Вывод:
@ViewBuilder - это мощный инструмент
SwiftUI, который превращает декларативный код в иерархию
View, делая интерфейсы гибкими и читаемыми.