SwiftUI: размещение LazyVStack или LazyHStack в ScrollView приводит к зависаниям (ошибка Apple??)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 SwiftUI: размещение LazyVStack или LazyHStack в ScrollView приводит к зависаниям (ошибка Apple??)

Сообщение Anonymous »

XCode версии 12.4 (12D4e)
Я сталкивался с этим каждый раз, когда реализовал отложенный стек внутри ScrollView:
  • Добавьте LazyHStack в горизонтальный ScrollView или LazyVStack в вертикальный ScrollView
  • Добавьте достаточно контента, чтобы размер содержимого представления прокрутки превышает его границы.
Сценарий 1. Вытяните представление прокрутки за пределы (как если бы вы потянули, чтобы обновить)
Ожидаемое поведение: оно ведет себя так, как ожидалось, когда прокрутка остается под вашим пальцем.
Наблюдаемое поведение: он заикается и подпрыгивает.
Сценарий 2 – быстрая прокрутка к краю, так что приходится подпрыгивать
Ожидаемое поведение: он плавно подпрыгивает
Наблюдаемое поведение: он останавливается и трясется, когда достигает края, но не не отскакивает
Моя теория
Моя теория заключается в том, что из-за использования ленивого стека, когда представление выходит за пределы экрана, оно удаляется с экрана. просматривать иерархию, создавая заикание.
Мне интересно, сталкивался ли кто-нибудь еще с этим? Это ошибка в SwiftUI? Я надежно воспроизводил это в течение нескольких месяцев в разных проектах и ​​в конечном итоге отказался от использования ленивых стеков, чего мне хотелось бы.
Пример кода

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

        ScrollView {
LazyVStack {
ForEach(viewModel.items) { items in
SomeView(viewModel: .init(context: viewModel.context, item: item))
}
}
Примечание. Заикание происходит только в верхней части прокрутки.
** Обновлено 10 июля, 2021 г. **
Это все еще происходит в бета-версии iOS 15 версии 13.0 (13A5155e).
Обратите внимание на видео ниже. поведение полосы прокрутки и заикание, когда мы доходим до конца:

** Обновлено 19 июля 2021 г. **
Я вырезал все, что на мой взгляд, и собрал обратно одно за другим — LazyVStack начинает заикаться, как только я помещаю VStack/HStack/ZStack вокруг простого элемента Text.
Если я добавлю фиксированный размер (по горизонтали: false, по вертикали: true) к элементу Text кажется, перестал заикаться. Как только я добавляю UIViewRepresentable переменной высоты, он снова начинает заикаться.
Похоже, что в LazyStack каждый дочерний элемент должен иметь какой-то фиксированный размер или чистое представление SwiftUI для работы.
Я продолжу копаться. Нужно... решить...
** Обновлено 24 февраля 2024 г. **
После долгого перерыва я вернулся к SwiftUI и вижу, что LazyVStack больше не зависает, когда он находится в ScrollView.
Я не уверен, в какой версии это исправлено, но ура!
XCode: 15.2
iOS: 17.4

Подробнее здесь: https://stackoverflow.com/questions/665 ... uttering-a
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Положение Lazyvstack или Lazyhstack в Scrollview вызывает заикание
    Anonymous » » в форуме IOS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Карусель SwiftUI с содержимым переменной высоты с использованием ScrollView и LazyHStack
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • IOS 17: SwiftUI ScrollView: прокрутка вниз на N пунктов в LazyVStack (невозможно использовать идентификатор ScrollTo, по
    Anonymous » » в форуме IOS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как настроить макет SwiftUI для поддержки отложенной загрузки, аналогично LazyVStack [закрыто]
    Anonymous » » в форуме IOS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Авария на Lazyvstack swiftui [закрыто]
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

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