Блокировать прокрутку вниз в ScrollView - SwiftUI
Как я могу заблокировать прокрутку вниз и разрешить прокрутку только вверх, чтобы при прокрутке не видеть пустое пространство над прямоугольником сверху?
struct ContentView: View {
var body: some View {
GeometryReader { geo in
ScrollView {
Rectangle()
.frame(width: geo.size.width, height: 400)
.foregroundColor(.black)
Spacer()
}
}
}
}
1 ответ
Я предполагаю, что вы хотите избежать отказов, вот возможный подход (протестирован с Xcode 12 / iOS 14)
struct ContentView: View {
var body: some View {
GeometryReader { geo in
ScrollView {
Rectangle()
.frame(width: geo.size.width, height: 1800)
.foregroundColor(.black)
.background(ScrollViewConfigurator {
$0?.bounces = false // << here !!
})
Spacer()
}
}
}
}
struct ScrollViewConfigurator: UIViewRepresentable {
let configure: (UIScrollView?) -> ()
func makeUIView(context: Context) -> UIView {
let view = UIView()
DispatchQueue.main.async {
configure(view.enclosingScrollView())
}
return view
}
func updateUIView(_ uiView: UIView, context: Context) {}
}
Заметка: enclosingScrollView()
helper взят из моего ответа в Как программно прокручивать список в SwiftUI?