Skip to content

JWAutumn/ACarousel

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
November 17, 2020 18:16
November 15, 2020 22:36
November 15, 2020 22:32
November 15, 2020 22:36
October 12, 2021 09:51
October 12, 2021 09:52

ACarousel

A carousel view for SwiftUI

中文文档

   

Table of Contents

Requirements

  • iOS 13.0+ / macOS 10.15+ / tvOS 13.0+
  • Xcode 11.0+
  • Swift 5.1+

Install

Swift Package Manager

Open Xcode, go to File -> Swift Packages -> Add Package Dependency and enter https://github.com/JWAutumn/ACarousel

You can also add ACarousel as a dependency to your Package.swift:

dependencies: [
  .package(url: "https://github.com/JWAutumn/ACarousel", from: "0.2.0")
]

Manually

Download and open the project, drag the ACarousel.swift file into your own project.

Usage

  • Basic use: The parameters of ACarousel have default values, so you can simply pass in the data source and eat it ~
struct Item: Identifiable {
    let id = UUID()
    let image: Image
}

let roles = ["Luffy", "Zoro", "Sanji", "Nami", "Usopp", "Chopper", "Robin", "Franky", "Brook"]

struct ContentView: View {
    
    let items: [Item] = roles.map { Item(image: Image($0)) }
    
    var body: some View {
        ACarousel(items) { item in
            item.image
                .resizable()
                .scaledToFill()
                .frame(height: 300)
                .cornerRadius(30)
        }
        .frame(height: 300)
    }
}

or:

...
var body: some View {
    ACarousel(roles, id: \.self) { name in
        Image(name)
            .resizable()
            .scaledToFill()
            .frame(height: 300)
            .cornerRadius(30)
    }
    .frame(height: 300)
}
...
  • Customize configuration: You can configure the corresponding parameters to customize the display style according to your needs.
 /// ...

struct ContentView: View {
    
    let items: [Item] = roles.map { Item(image: Image($0)) }
    
    var body: some View {
        ACarousel(items,
                  spacing: 10,
                  headspace: 10,
                  sidesScaling: 0.7,
                  isWrap: true,
                  autoScroll: .active(2)) { item in
            item.image
                .resizable()
                .scaledToFill()
                .frame(height: 300)
                .cornerRadius(30)
        }
        .frame(height: 300)
    }
}

Example

Download and open ACarouselDemo -> ACarouselDemo.xcodeproj, run and view.

Maintainers

@JWAutumn@Underthestars-zhy@Alexander Chapliuk@thitran-incepit.

Contributing

Feel free to dive in! Open an issue or submit PRs.

License

MIT © JWAutumn