Основы GeometryReader
Измеряйте доступное пространство, чтобы задать размер содержимого.
«Основы GeometryReader» — бесплатный урок SwiftUI Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SwiftUI Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SwiftUI Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Measuring Space
Sometimes a view needs to know how big its slot is. GeometryReader hands you the exact size and position of the space it occupies. 📐
It Is a Container
A GeometryReader is a view whose body is a closure receiving a proxy that describes the available space.
GeometryReader { proxy in
Text("Hi")
}The Proxy
That closure parameter is a GeometryProxy. It carries the size, safe-area insets, and frame of the reader.
GeometryReader { proxy in
let w = proxy.size.width
Color.blue.frame(width: w)
}Reading the Size
The most common move is proxy.size, a CGSize giving you the width and height you can fill.
GeometryReader { proxy in
Text("\(proxy.size.width)")
}Half the Width
Use the measured width for proportional sizing, like making a bar exactly half of the available width.
GeometryReader { proxy in
Color.green
.frame(width: proxy.size.width / 2)
}It Fills by Default
A GeometryReader greedily takes all the space its parent offers, so its children align to the top-left unless you center them.
Centering Content
Because content pins top-left, wrap it or add a frame with alignment to center children inside the reader.
GeometryReader { proxy in
Text("Center")
.frame(width: proxy.size.width,
height: proxy.size.height)
}Global Coordinates
Ask for a view position in the window with proxy.frame(in: .global), handy for scroll effects and overlays.
let f = proxy.frame(in: .global)
Text("\(f.minY)")Safe Area Insets
The proxy also exposes safeAreaInsets, so you can respect notches and home indicators in custom layouts.
let top = proxy.safeAreaInsets.topUse It Sparingly
A GeometryReader changes layout behavior, so reach for it only when you truly need measurements, not as a default wrapper. ⚠️
Scroll-Driven Effects
Combined with a ScrollView, reading each item frame lets you build parallax and fade effects tied to scroll position.
Quick Check
Recall what the closure hands you.
Recap
You can now read available space with GeometryReader, size views proportionally, and read frames for scroll-aware effects. 🎉
Часто задаваемые вопросы
Урок «Основы GeometryReader» бесплатный?
Да — полный текст урока «Основы GeometryReader» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SwiftUI Academy, подпишись на CoddyKit PRO. Курс SwiftUI Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы GeometryReader»?
Измеряйте доступное пространство, чтобы задать размер содержимого. Ты практикуешь SwiftUI Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SwiftUI Academy?
Предыдущий опыт не требуется. SwiftUI Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы GeometryReader»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SwiftUI Academy?
Да. Каждый урок SwiftUI Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы GeometryReader
- Пользовательские направляющие выравнивания
- Протокол Layout
- Создание Flow Layout