Latest 0.2.1
License MIT
Platforms tvos

Ouroboros, by WillowTree

Carthage compatible

An infinitely scrolling carousel for tvOS


You can use this project via CocoaPods:

pod 'WillowTreeOuroboros'

Or via Carthage:

github "willowtreeapps/ouroboros" >= 0.2.1

Or you can simply copy the InfiniteCarousel.swift file into
your project.


See the enclosed OuroborosExample application for a working demo.

If you’re using a storyboard, simply change your collection view class to
InfiniteCarousel. Make sure you’re using a horizontally scrolling collection
view with a flow layout, and make sure the flow layout’s item size and minimum
line spacing are both set.

If you wish to center on more than one item at a time, be sure to update

If you wish for the carousel to auto-scroll, set autoScroll and the two
related timers (in seconds).


  • Your carousel will work best if the total number of items you display is evenly
    divisible by the number of items per page (count % itemsPerPage == 0).
  • This carousel only supports a single section with homogenous sizes and
    interline items.
  • This carousel currently only scrolls horizontally.
  • The carousel overrides setters to become its own data source and delegate.
    If you need to do any extra datasource or delegate work you must subclass
    and access the rootDataSource and rootDelegate instances.
  • You must use a UICollectionViewFlowLayout with the carousel, and you must
    set up the item sizes and line spacing with its instance variables.

WillowTree is Hiring!

Want to write amazing tvOS apps? Want to write amazing iOS apps?
Check out our openings!

Version History

Update to Swift 3.0 syntax.

Latest podspec

    "name": "WillowTreeOuroboros",
    "version": "0.2.1",
    "summary": "Infinitely scrolling carousel for tvOS",
    "description": "Ouroboros implements an infinitely scrolling carousel forntvOS, driven by the focus engine.nnIt supports 1 or more centered items grouped into pages.nnTo use from a storyboard, set your collection view's classnto InfiniteCarousel and update the itemsPerPage variable.",
    "homepage": "",
    "license": "MIT",
    "authors": {
        "Ian Terrell": "[email protected]"
    "source": {
        "git": "",
        "tag": "0.2.1"
    "platforms": {
        "tvos": null
    "source_files": [
    "public_header_files": "Ouroboros/**/*.h",
    "pushed_with_swift_version": "3.0"

Pin It on Pinterest

Share This