Code: Select all
import SwiftUI
struct Album: Identifiable{
let id = UUID()
let name: String
}
struct ScrollContentView: View {
@State var albumScrollId: Album.ID?
@State var albums: [Album] = []
var body: some View {
VStack{
Button("Scroll random"){
albumScrollId = albums.randomElement()?.id
}.buttonStyle(.borderedProminent).padding()
Scroller(albumScrollId: $albumScrollId, albums: albums)
Scroller(albumScrollId: $albumScrollId, albums: albums)
}.onAppear{
albums = [
Album(name: "1"),
Album(name: "2"),
Album(name: "3")
]
albumScrollId = albums[0].id
}
}
}
struct Scroller: View {
@Binding var albumScrollId: Album.ID?
let albums: [Album]
var body: some View {
VStack{
Text("\(albumScrollId?.uuidString ?? "")")
ScrollView(.horizontal){
HStack(spacing: 0){
ForEach(albums){album in
Text("album: \(album.name)").font(.title)
.containerRelativeFrame(.horizontal, alignment: .center)
}
} .scrollTargetLayout()
}.scrollTargetBehavior(.paging)
.scrollIndicators(.never)
.scrollPosition(id: $albumScrollId, anchor: .center)
}
}
}