# nicklockwood/icarousel

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nicklockwood-icarousel).**

12,129 stars · 2,535 forks · Objective-C · NOASSERTION

## Links

- GitHub: https://github.com/nicklockwood/iCarousel
- Homepage: http://www.charcoaldesign.co.uk/source/cocoa#icarousel
- awesome-repositories: https://awesome-repositories.com/repository/nicklockwood-icarousel.md

## Description

iCarousel is a data-driven UI library for macOS and iOS used to build interactive three-dimensional scrolling experiences. It functions as a customizable view controller that renders paged content using cylindrical or cover-flow 3D effects.

The component is distinguished by its programmable perspective and visual transformation hooks, which allow for the definition of custom 3D styles and bespoke animation effects. Users can adjust viewpoint distance, alpha fading, and foreshortening to control how the vanishing point and depth appear during navigation.

The library manages high-performance view recycling by loading necessary item views on demand from a data source. It covers broad capability areas including interactive content navigation, coordinate-based item detection for touch events, and the management of dynamic item insertion and deletion.

## Tags

### User Interface & Experience

- [Carousel Transition Effects](https://awesome-repositories.com/f/user-interface-experience/carousel-transition-effects.md) — Renders paged content using cylindrical and cover-flow 3D effects for a fluid scrolling experience. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Content Carousels](https://awesome-repositories.com/f/user-interface-experience/content-display-components/content-carousels.md) — Renders paged content using cylindrical or wheel layouts to create interactive 3D scrolling experiences. ([source](https://github.com/nicklockwood/icarousel#readme))
- [3D UI Components](https://awesome-repositories.com/f/user-interface-experience/3d-ui-components.md) — Provides 3D scrolling galleries and carousels for iOS and macOS apps with visual depth.
- [Carousel Components](https://awesome-repositories.com/f/user-interface-experience/carousel-components.md) — A data-driven Swift component that renders paged content using cylindrical or cover-flow 3D effects.
- [Transform Calculators](https://awesome-repositories.com/f/user-interface-experience/coordinate-based-position-calculators/transform-calculators.md) — Calculates dynamic 3D rotations, scaling, and transparency based on an item's relative offset from the center.
- [Customizable UI Components](https://awesome-repositories.com/f/user-interface-experience/customizable-ui-components.md) — Offers programmable perspective, alpha fading, and transformation hooks for custom animations.
- [Data-Driven View Controllers](https://awesome-repositories.com/f/user-interface-experience/data-driven-view-controllers.md) — Acts as a scrolling container that manages view recycling and dynamic loading from a data source.
- [Offset Calculators](https://awesome-repositories.com/f/user-interface-experience/grid-layouts/item-positioning/offset-calculators.md) — Determines the offset of items from the center to apply custom transforms and transparency. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Interaction Handling](https://awesome-repositories.com/f/user-interface-experience/interaction-handling.md) — Detects taps and gestures on individual items through delegate methods to trigger application logic. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Dynamic View Loading](https://awesome-repositories.com/f/user-interface-experience/list-views/list-loading-workflows/dynamic-view-loading.md) — Loads item views and placeholders on demand as the user scrolls to optimize memory. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Navigation & Scrolling Tools](https://awesome-repositories.com/f/user-interface-experience/navigation-scrolling-tools.md) — Implements custom paging and scrolling behaviors combined with 3D transforms for content browsing.
- [Collection View Optimizers](https://awesome-repositories.com/f/user-interface-experience/performance-optimizers/collection-view-optimizers.md) — Limits the number of active views to maintain smooth performance when handling large datasets. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Cylindrical Projections](https://awesome-repositories.com/f/user-interface-experience/scroll-animations/scroll-progress-mapping/cylindrical-projections.md) — Implements cylindrical projection mapping to create the visual effect of a rotating 3D wheel.
- [Scrolling Carousels](https://awesome-repositories.com/f/user-interface-experience/scrolling-carousels.md) — Controls scrolling, paging, and bounce physics to determine how users navigate 3D content. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Data-Driven Layouts](https://awesome-repositories.com/f/user-interface-experience/view-layouts/data-driven-layouts.md) — Manages large sets of paged content using a data source to efficiently render and recycle views.
- [View Recycling Systems](https://awesome-repositories.com/f/user-interface-experience/view-recycling-systems.md) — Implements high-performance view recycling to maintain smooth scrolling through large datasets.
- [Animation Engines](https://awesome-repositories.com/f/user-interface-experience/animation-engines.md) — Provides a programmable engine to handle autoscrolling and precise item centering using calculated offsets.
- [Behavior Configurations](https://awesome-repositories.com/f/user-interface-experience/autocomplete-components/behavior-configurations.md) — Allows adjustment of visual properties like perspective, alpha fading, and paging constraints. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Data Refresh Mechanisms](https://awesome-repositories.com/f/user-interface-experience/dashboard-widgets/dashboard-data-filters/data-refresh-mechanisms.md) — Includes a mechanism to reload all views from the data source to update the current display. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Collection Item Controllers](https://awesome-repositories.com/f/user-interface-experience/data-tables/data-entry-forms/collection-item-controllers.md) — Supports dynamic removal of items with automatic sliding animations to fill gaps. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Collection Managers](https://awesome-repositories.com/f/user-interface-experience/form-builders/builder-item-collapsers/builder-item-managers/collection-managers.md) — Handles the dynamic insertion and deletion of items to update the carousel content list. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Transform Styles](https://awesome-repositories.com/f/user-interface-experience/visual-style-customization/transform-styles.md) — Implements unique 3D effects by applying visual transformations to items based on their offset. ([source](https://github.com/nicklockwood/icarousel#readme))

### Graphics & Multimedia

- [Dynamic Depth Simulations](https://awesome-repositories.com/f/graphics-multimedia/dynamic-depth-simulations.md) — Simulates a 3D vanishing point by adjusting the z-axis and foreshortening based on viewpoint distance.
- [3D Viewport Configurations](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/gpu-accelerated-ui-rendering/3d-scene-renderers/3d-viewport-configurations.md) — Configures viewpoint and foreshortening to control the vanishing point and 3D depth. ([source](https://github.com/nicklockwood/icarousel#readme))
- [Custom Animation Effects](https://awesome-repositories.com/f/graphics-multimedia/custom-animation-effects.md) — Provides hooks to define bespoke visual transformations and custom 3D animation effects. ([source](https://github.com/nicklockwood/icarousel#readme))

### Web Development

- [View Recycling](https://awesome-repositories.com/f/web-development/dom-element-manipulators/view-recycling.md) — Optimizes memory and frame rates by recycling complex views and loading only necessary elements.
- [Distance-Based Transitions](https://awesome-repositories.com/f/web-development/page-transition-controls/visual-transform-transitions/distance-based-transitions.md) — Adjusts spacing, tilt, and fade-out thresholds of items based on their distance from the center. ([source](https://github.com/nicklockwood/icarousel#readme))

### Mobile Development

- [iOS UI Components](https://awesome-repositories.com/f/mobile-development/ios-ui-components.md) — Provides a set of 3D layout tools designed specifically for the iOS and macOS platforms.

### Part of an Awesome List

- [UI Components](https://awesome-repositories.com/f/awesome-lists/devtools/ui-components.md) — Carousel view with multiple transition effects.
