0Pricing
SwiftUI Academy · Урок

ViewBuilder и обобщённые контейнеры

Принимайте произвольное содержимое с помощью @ViewBuilder.

«ViewBuilder и обобщённые контейнеры» — бесплатный урок SwiftUI Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SwiftUI Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SwiftUI Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Containers That Hold Anything

VStack and List accept whatever views you nest inside them. You can build your own container that holds arbitrary content too. 📦

What @ViewBuilder Does

The @ViewBuilder attribute lets a closure list several views without commas or arrays. It is the magic behind stacks.

VStack {
    Text("One")
    Text("Two")
}

Accept content as a Closure

Make your container take a content closure marked @ViewBuilder. Callers then pass views just like they do for VStack.

struct Card<Content: View>: View {
    @ViewBuilder var content: Content
}

Generic over Content

The container is generic over its content type. That single struct can wrap a Text, an image, or a whole layout.

Render the Content

In your body, place the stored content inside whatever wrapper you want, like padding and a background.

var body: some View {
    content.padding().background(.gray)
}

Use Your Container

Call it with a trailing closure and nest any views inside. Your custom wrapper now feels just like a built-in one.

Card {
    Text("Title")
    Text("Body")
}

Builder on Functions Too

Mark a helper function with @ViewBuilder to return different views from branches without wrapping them in a type.

@ViewBuilder
func footer(show: Bool) -> some View {
    if show { Text("More") } else { EmptyView() }
}

Conditionals in Builders

Inside a builder you can use if and switch freely. SwiftUI assembles the chosen branch into the final view tree.

Multiple Content Slots

A container can take more than one builder, like a header and a footer. Each slot is its own @ViewBuilder closure.

struct Panel<H: View, B: View>: View {
    @ViewBuilder var header: H
    @ViewBuilder var body2: B
}

Reusable Layout Shells

Generic containers capture a layout shell once, like a bordered card, and let every screen fill it with unique content.

Type-Safe and Flexible

Because content is generic, the compiler still checks every view. You get flexibility without losing type safety.

Quick Check

Quick check on generic containers.

Recap: Build Flexible Containers

Combine @ViewBuilder with a generic content type to make containers that wrap any views. Reusable shells, full type safety. 🧠

Часто задаваемые вопросы

Урок «ViewBuilder и обобщённые контейнеры» бесплатный?

Да — полный текст урока «ViewBuilder и обобщённые контейнеры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SwiftUI Academy, подпишись на CoddyKit PRO. Курс SwiftUI Academy содержит 4 уроков всего.

Чему я научусь в уроке «ViewBuilder и обобщённые контейнеры»?

Принимайте произвольное содержимое с помощью @ViewBuilder. Ты практикуешь SwiftUI Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SwiftUI Academy?

Предыдущий опыт не требуется. SwiftUI Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «ViewBuilder и обобщённые контейнеры»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SwiftUI Academy?

Да. Каждый урок SwiftUI Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Выделение переиспользуемых представлений
  2. Пользовательские ViewModifiers
  3. ButtonStyle и LabelStyle
  4. ViewBuilder и обобщённые контейнеры
← Назад к SwiftUI Academy