Я обнаружил, что возникает проблема. когда количество видимых элементов четное. При нечетном количестве видимых элементов первоначальное выравнивание и привязка работают правильно с самого начала.
Вот код для моего 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]
Мобильная версия