SwiftUI and Carousel View in iOS Development with Swift

iOS Guru
2 min readJan 13, 2023

SwiftUI is a modern, declarative user interface framework that makes it easier to build efficient and powerful user interfaces for Apple’s platforms. Carousel view is a type of view used to display a group of items in a scrollable, circular fashion. It is a great way to display multiple items in a small space, and is often used in mobile apps for displaying images or other content. In this article, we will explore how to use SwiftUI to create a carousel view in iOS development with Swift.

Creating a Carousel View with SwiftUI

Creating a carousel view with SwiftUI is relatively straightforward. We will need to create a ScrollView that contains a VStack with a ForEach loop. The ForEach loop will create a series of views that will be the items in the carousel. We will also need to set the pagingEnabled property on the ScrollView to true, so that the user can scroll through the items one page at a time. Finally, we will need to set the contentOffset property on the ScrollView so that the carousel will start at the correct page.

Example Code

Here is an example of how to create a carousel view in SwiftUI:

struct CarouselView: View {
let items: [Item]
@State private var currentPage: Int = 0

var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
VStack(spacing: 0) {
ForEach(items) { item in
item.view
.frame(width: UIScreen.main.bounds.width)
}
}
}
.padding(.horizontal, 0)
.padding(.top, 0)
.padding(.bottom, 0)
.content.offset(x: CGFloat(currentPage) * UIScreen.main.bounds.width)
.frame(height: UIScreen.main.bounds.height)
.onAppear {
self.currentPage = 0
}
.onReceive(NotificationCenter.default.publisher(for: UIApplication.didChangeStatusBarOrientationNotification)) { _ in
self.currentPage = 0
}
.gesture(DragGesture().onChanged({ value in
self.currentPage = Int((value.translation.width + UIScreen.main.bounds.width / 2) / UIScreen.main.bounds.width)
}))
.animation(.easeInOut)
}
}

In the above example, we create a ScrollView and set its pagingEnabled property to true. We then create a VStack with a ForEach loop that creates a series of views that will be the items in the carousel. We set the contentOffset property on the ScrollView so that the carousel will start at the correct page. Finally, we add a DragGesture to the ScrollView so that the user can scroll through the items one page at a time.

Conclusion

In this article, we explored how to use SwiftUI to create a carousel view in iOS development with Swift. We created a ScrollView with a VStack and a ForEach loop to create the items in the carousel. We then set the pagingEnabled property on the ScrollView to true, and set the contentOffset property to start the carousel at the correct page. Finally, we added a DragGesture to the ScrollView so that the user can scroll through the items one page at a time. With SwiftUI, creating a carousel view is a simple and straightforward process.

--

--