Пространство по умолчанию в SwiftUI ScrollViewIOS

Программируем под IOS
Ответить
Anonymous
 Пространство по умолчанию в SwiftUI ScrollView

Сообщение Anonymous »

Я пытаюсь создать собственное представление прокрутки, которое может уведомлять родительское представление, если пользователь прокрутил до конца.
Вот как я это реализую:

Код: Выделить всё

struct CustomVerticalScrollView: View {
let content: Content

init(@ViewBuilder content: () -> Content) {
self.content = content()
}

var body: some View {
ScrollView {
content

Color
.clear
.frame(width: 0, height: 0)
.modifier(ViewAppearsOnScreen())
.onPreferenceChange(IsOnScreenKey.self) { value in
if value == true {
print("Has reached end!")
}
}
}
.background(.green)
}
}

struct ViewAppearsOnScreen: ViewModifier {
func body(content: Content) -> some View {
GeometryReader { geometry in
// Check if this view's frame intersects with the visible screen bounds
content
.preference(
key: IsOnScreenKey.self,
value: isViewVisible(geometry: geometry)
)
}
}

// Determines if the view is visible within the screen's bounds
private func isViewVisible(geometry: GeometryProxy) -> Bool {
let frame = geometry.frame(in: .global) // Get the frame in global space
let screenBounds = UIScreen.main.bounds // Screen boundaries

return screenBounds.intersects(frame) // Check if it intersects with screen bounds
}
}
Код, использованный здесь для определения конца прокрутки, был взят из этого ответа.
И вот как я его использую:
р>

Код: Выделить всё

struct ContentView: View {
var body: some View {

CustomVerticalScrollView{
VStack(spacing: .zero) {
Color
.blue
.frame(maxWidth: .infinity)
.frame(height: 1000)
}
}
}
}
Однако эта функциональность работает хорошо. Это дает мне следующие результаты с некоторым дополнительным интервалом:
Изображение
  • Когда у меня нет четкого представления цветов, кажется, что в конце не добавляется пробел, хотя отступов нет, а высота представления равна 0 (третий элемент в таблице).
  • Когда я добавляю очистку в цветном представлении добавляется значительный интервал в конце (первый элемент в таблице)
  • Если я удалю два упомянутых модификатора из второго элемента в таблице, некоторые отступы все равно останутся - вероятно, здесь задействована программа чтения геометрии
Я думал, что установка высоты на 0 и использование программы чтения геометрии не повлияют на интервал.Просто интересно, как мне убрать все эти лишние пробелы, чтобы иметь возможность иметь этот дополнительный вид.

Подробнее здесь: https://stackoverflow.com/questions/784 ... scrollview
Ответить

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

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

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

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

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