Перейти к содержимому

Осваиваем 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() }