Как определить, что пользователь достиг нижней части 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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