- SwiftUI — получить размер дочернего элемента?
- SwiftUI — Как получить размер (высоту) содержимого ScrollView
- Получить текущую позицию прокрутки SwiftUI ScrollView
Похоже, что эту проблему можно решить, используя 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
Мобильная версия