Foreach SwiftUI中的自定义滚动视图指示器

Foreach SwiftUI中的自定义滚动视图指示器,foreach,swiftui,scrollview,indicator,Foreach,Swiftui,Scrollview,Indicator,是否可以创建一个自定义的水平指示器,其中有空的和填充的圆圈,以显示有多少图像和当前位置 下面的尝试使用了一个lazyHStack和OnAppear,但是从控制台输出判断,它不能正常工作,因为前后滚动并不能一致地调用OnAppear import SwiftUI struct ContentView: View { let horizontalScrollItems = ["wind", "hare.fill", "tortoise.fi

是否可以创建一个自定义的水平指示器,其中有空的和填充的圆圈,以显示有多少图像和当前位置

下面的尝试使用了一个
lazyHStack
OnAppear
,但是从控制台输出判断,它不能正常工作,因为前后滚动并不能一致地调用OnAppear

import SwiftUI

struct ContentView: View {
    let horizontalScrollItems = ["wind", "hare.fill", "tortoise.fill", "rosette" ]
    
    var body: some View {
        GeometryReader { geometry in
            ScrollView(.horizontal, showsIndicators: false) {
                LazyHStack {
                    ForEach(horizontalScrollItems, id: \.self) { symbol in
                        Image(systemName: symbol)
                            .font(.system(size: 200))
                            .frame(width: geometry.size.width)
                            .onAppear(){print("\(symbol)")}
                            
                    }
                }
            }
        }
    }
}
这是所需的指标。我只是不知道如何在用户来回滚动时正确填充和清空每个圆圈。谢谢你的帮助


使用
TabView()
PageTabViewStyle()

注意:这将在SwiftUI 2.0上运行

代码如下:

struct ContentView: View {
    let horizontalScrollItems = ["wind", "hare.fill", "tortoise.fill", "rosette" ]
    
    var body: some View {
        GeometryReader { geometry in
            TabView(){
                ForEach(horizontalScrollItems, id: \.self) { symbol in
                    Image(systemName: symbol)
                        .font(.system(size: 200))
                        .frame(width: geometry.size.width)
                }
            }
            .tabViewStyle(PageTabViewStyle())
            .indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
        }
    }
}
结果:

请参阅。