TGViewer
Мобильный трудоголик Мобильный трудоголик @hardworkerit · 1.65K subscribers
Post #130 1.01K
🔢 @ViewBuilder: магия композиции в SwiftUI.

Всем привет! Сегодня разберём @ViewBuilder — один из ключевых механизмов SwiftUI, который делает наш код таким лаконичным и выразительным.


⚠️ Что такое @ViewBuilder?

Это специальный атрибут, который превращает несколько View в одну иерархию. Благодаря ему мы пишем так:

VStack {
Text("Привет")

Button("Нажми меня") {
// Действие
}

Image(systemName: "apple.logo")
}


Вместо такого кошмара:

VStack(content: {
TupleView(
Text("Привет"),

Button("Нажми меня") {
// Действие
},

Image(systemName: "swift")
)
})



🤔 Как это работает?

1️⃣ Автоматическая упаковка:

@ViewBuilder преобразует список вьюх в TupleView (для 2-10 элементов) или Group (если их больше).

2️⃣ Поддержка условий:

Может обрабатывать if, if let, switch:

@ViewBuilder
func header(isLoggedIn: Bool) -> some View {
if isLoggedIn {
Text("Добро пожаловать!")
} else {
Button("Войти") {
// Действие
}
}
}


3️⃣ Ограничения:

🔹 Нельзя использовать for напрямую (нужен ForEach).
🔹 Максимум 10 вьюх в одном блоке (но это ограничение обходится).


✅ Продвинутые фишки:

🔸 Комбинирование с @resultBuilder.

Можно создать свой билдер для специфичных задач:

@resultBuilder
struct GridBuilder {
static func buildBlock(_ items: AnyView...) -> [AnyView] {
items
}
}


🔸 Обход ограничения в 10 вьюх.

Для этого стоит использовать Group:

@ViewBuilder
func megaView() -> some View {
Group {
Text("1")
...
Text("11") // Работает!
}
}



💡 Вывод:

@ViewBuilder — это мощный инструмент SwiftUI, который превращает декларативный код в иерархию View, делая интерфейсы гибкими и читаемыми.


➡️ Подписаться на канал
Мобильный трудоголик
  • ❤ 21
  • 👍 2
  • 🔥 1
  • 🫡 1
More from @hardworkerit
  1. Oct 9, 2026👨‍💻 Умение адаптироваться - важный навык айтишника, который часто недооценивают. В ИТ не…
  2. Oct 8, 2026🈸 Apple обяжет разработчиков поддерживать iPhone Duo. Apple опубликовала требования к при…
  3. Oct 6, 2026🔢 Swift 6.4: новая диагностика ретейн циклов. В Swift 6.4 появилась новая диагностика, ко…
  4. Oct 4, 2026🔢 SwiftUI: определение угла раскрытия iPhone Duo. В iOS 27.1 появился модификатор .onHing…
  5. Oct 2, 2026👣 Архитекторы, тестировщики и кодеры. Создаем мультиагентную команду Разработка с ИИ-аген…
  6. Oct 1, 2026🔢 Работа с Picture-in-Picture в iOS. Picture-in-Picture - системная функция iOS, которая…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →