// the find
nicklockwood/iCarousel
A simple, highly customisable, data-driven 3D carousel for iOS and Mac OS
iCarousel is a drop-in UIView subclass for iOS and macOS that implements scrollable carousel layouts — cylinders, cover flows, rotaries, wheels — with a UITableView-style datasource/delegate API. It works with any UIView as an item, not just images. Aimed at iOS developers who want a polished paged-scroll effect without hand-rolling CATransform3D math.
The custom transform API (`carousel:itemTransformForOffset:baseTransform:`) is genuinely well-designed — you get the current offset as a float and return a CATransform3D, which is the right abstraction level for this problem. The view recycling mechanism mirrors UITableView closely enough that anyone familiar with that pattern can pick it up in an hour. Eleven built-in types covering most use cases developers actually reach for, with enough delegate hooks (spacing, arc, tilt, fade range) to tune them without forking. The Mac support via Chameleon is a nice bonus for cross-platform UI experiments, even if it's limited.
This is Objective-C targeting iOS 10 / macOS 10.12, with no Swift API and no SwiftUI wrapper. In 2024 that means manual bridging, no async/await, and friction with every modern iOS project. The last meaningful commit appears to be years old — the repo is effectively unmaintained. Hit detection on macOS is broken for embedded controls (acknowledged in the README with no fix), which rules out non-trivial Mac use. The view recycling pool has no reuseIdentifier support, so mixed-type carousels must create fresh views every call — a real performance problem with complex item views.