Проблема привязки SwiftUI к горизонтальной прокрутке при начальной загрузке, когда `visibleItems` четныйIOS

Программируем под IOS
Ответить
Anonymous
 Проблема привязки SwiftUI к горизонтальной прокрутке при начальной загрузке, когда `visibleItems` четный

Сообщение Anonymous »

Я создаю горизонтальный ScrollView в SwiftUI, который привязывает элементы к центру экрана. Привязка работает отлично при прокрутке, но при первой загрузке представления исходный элемент немного смещается и не привязывается к центру, как ожидалось.
Я обнаружил, что возникает проблема. когда количество видимых элементов четное. При нечетном количестве видимых элементов первоначальное выравнивание и привязка работают правильно с самого начала.
Вот код для моего CircleScrollView:

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

struct CircleScrollView: View {

@State(initialValue: 2)
var initialPosition: Int

@State(initialValue: 8)
private var visibleItems: Int

@State(initialValue: 0)
private var currentIndex: Int

private let spacing: CGFloat = 16

var body: some View {
ZStack(alignment: .leading) {

// For visuals of screen centre
Rectangle()
.fill(Color.gray.opacity(0.2))
.ignoresSafeArea()
.frame(maxWidth: UIScreen.main.bounds.width / 2, maxHeight: .infinity, alignment: .leading)

GeometryReader { geometry in

let totalSpacing = spacing * CGFloat(visibleItems - 1)
let circleSize = (geometry.size.width - totalSpacing) / CGFloat(visibleItems)

ScrollViewReader { scrollViewProxy in
ScrollView(.horizontal) {
HStack(spacing: spacing) {
ForEach(1..
[/list]

[img]https://i .imgur.com/rZtWyG9.mp4[/img]
 

Подробнее здесь: [url]https://stackoverflow.com/questions/78948585/swiftui-horizontal-scrollview-snapping-issue-on-initial-load-when-visibleitems[/url]
Ответить

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

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

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

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

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