ScrollViewReader не выполняет прокрутку до правильной позиции в 2D ScrollView

Вот простой код SwiftUI, который создает большую сетку, которая помещается в 2D ScrollView. Щелчок по каждому элементу заставит ScrollView перейти к другому элементу, идентификатор которого на 50 больше, чем у выбранного элемента. ScrollView действительно прокручивается, но никогда не прокручивается до нужного. Я пробовал его на macOS и iOS, и ни один из них не работал. Я также пробовал использовать VStack и HStack вместо LazyVGrid, но все равно это не сработало. Как правильно этого добиться?

      struct ContentView: View {
  let columns = Array.init(repeating: GridItem(.fixed(80)), count: 20)

    var body: some View {
      ScrollView([.horizontal, .vertical]) {
        ScrollViewReader { proxy in
          LazyVGrid(columns: columns, spacing: 20) {
            ForEach(0..<500) { i in
              ZStack {
                Circle()
                  .fill(Color.green)
                  .frame(width: 30, height: 30)
            
                Text("\(i)")
              }
              .id("\(i)")
              .onTapGesture {
                proxy.scrollTo("\(i + 50)")
              }
            }
          }
          .padding(.horizontal)
        }
      }
      .frame(minWidth: 500, minHeight: 300)
    }
}

0 ответов

Другие вопросы по тегам