Осваиваем ScrollView в SwiftUI менее чем за 10 минут
StemFoxIO
0:00 / 0:00
Осваиваем ScrollView в SwiftUI менее чем за 10 минут
528 просмотров · 10 месяцев назад
StemFoxIO
277 подписчиков
528 просмотров · 10 месяцев назад
SwiftUI ScrollView — Как добавить ScrollView в SwiftUI, SwiftUI ScrollViewReader, Фиксированный заголовок, Горизонтальная и вертикальная прокрутка, Прокрутка до позиции
Смотрите дальше: • How To Make Your SwiftUI Navigation Bar Lo...
Ссылки на видео
ScrollView:
https://developer.apple.com/documenta...
ScrollViewReader:
https://developer.apple.com/documenta...
Свяжитесь со мной!
X: https://x.com/StemFoxIO
Вопрос — Для чего вы будете использовать ScrollView или List? Ответьте в комментариях!
Хотите узнать больше? Вот несколько источников, из которых я учился. Кроме того, некоторые покупки помогают каналу (партнерские ссылки).
Мне очень нравятся книги Big Mountain Studio. Подробные и с большим количеством иллюстраций. Посмотрите их здесь: https://www.bigmountainstudio.com/a/y...
⏰ Таймкоды ⏰
00:00 - Вступление
00:03 - Как добавить ScrollView в SwiftUI
00:45 - Вертикальный ScrollView в SwiftUI
01:25 - Горизонтальный ScrollView в SwiftUI
02:28 - ScrollView против списка
02:58 - Фиксированный заголовок и нижний колонтитул в SwiftUI
04:48 - Отключение прокрутки ScrollView
05:26 - Читатель ScrollView в SwiftUI
06:15 - Прокрутка ScrollView вверху в SwiftUI
06:55 - Прокрутка ScrollView внизу в SwiftUI
07:14 - Прокрутка ScrollView в случайном месте в SwiftUI
08:09 - Прокрутка ScrollView в точке просмотра в SwiftUI
09:21 - Заключение
#swift, #ios #development, #software, #swiftui #scrollview
О проекте:
StemFoxIO публикует видеоролики, которые помогут вам стать лучше и эффективнее в разработке iOS-приложений.
Код:
```
import SwiftUI
struct ContentView: View {
var body: some View {
ScrollViewReader { proxy in
ScrollView(.vertical) {
VStack {
ForEach(0...20) { index in
Color.random()
.frame(width: 100, height: 100)
.overlay {
Text("Color \(index)")
.padding(5)
.padding(.horizontal, 5)
.background(.thinMaterial)
.clipShape(.capsule)
}
.id(index)
}
}
}
.border(.red)
.safeAreaInset(edge: .top, spacing: 0) {
VStack {
Text("Scroll To:")
HStack(spacing: 30) {
Button("Top") {
proxy.scrollTo(0)
}
Button("Bottom") {
proxy.scrollTo(19)
}
Button("Color 13") {
proxy.scrollTo(13, anchor: .center)
}
Button("Random") {
let random = Int.random(in: 0...20)
proxy.scrollTo(random, anchor: .top)
}
}
}
.padding(.bottom)
.frame(maxWidth: .infinity)
.background(.thinMaterial)
}
}
}
public extension Color {
static func random(randomOpacity: Bool = false) → Color {
Color(
red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
opacity: randomOpacity ? .random(in: 0...1) : 1
)
}
}
```
#Preview {
ContentView()
}