Как определить, что пользователь достиг нижней части ScrollView?IOS

Программируем под IOS
Anonymous
Как определить, что пользователь достиг нижней части ScrollView?

Сообщение Anonymous »

В качестве примера я использовал следующий код:
  • SwiftUI — получить размер дочернего элемента?
  • SwiftUI — Как получить размер (высоту) содержимого ScrollView
  • Получить текущую позицию прокрутки SwiftUI ScrollView
I думаю, это довольно близко.
Похоже, что эту проблему можно решить, используя origin.maxY вместо origin.y,
но origin.maxY этого не делает кажется, что он предоставлен в GeometryReader(строго говоря: CGRect).
Как определить, что пользователь достиг нижней части ScrollView?
import SwiftUI

struct ContentView: View {
let spaceName = "scroll"

@State var scrollViewSize: CGSize = .zero

var body: some View {
ScrollView {
ChildSizeReader(size: $scrollViewSize) {
VStack {
ForEach(0.. Value) {
value += nextValue()
}
}

struct ChildSizeReader: View {
@Binding var size: CGSize

let content: () -> Content
var body: some View {
ZStack {
content().background(
GeometryReader { proxy in
Color.clear.preference(
key: SizePreferenceKey.self,
value: proxy.size
)
}
)
}
.onPreferenceChange(SizePreferenceKey.self) { preferences in
self.size = preferences
}
}
}

struct SizePreferenceKey: PreferenceKey {
typealias Value = CGSize
static var defaultValue: Value = .zero

static func reduce(value _: inout Value, nextValue: () -> Value) {
_ = nextValue()
}
}


Подробнее здесь: https://stackoverflow.com/questions/686 ... scrollview

Вернуться в «IOS»