A customizable modal controller for iOS that mimics the Apple Music, Mail, and Podcasts sheet presentation style.
SPStorkController is a Swift library that provides a customizable modal presentation controller for iOS apps, designed to replicate the sheet-style interface seen in Apple's native apps like Music, Mail, and Podcasts. It solves the problem of creating polished, interactive modal views with native gestures and visual fidelity, especially for developers targeting iOS 10 and above.
iOS developers building apps that require modal sheets with a native Apple aesthetic, particularly those needing custom height, interactive dismissal, or compatibility with scroll views.
Developers choose SPStorkController for its exact replication of Apple's modal design, extensive customization options, and seamless integration with existing UIKit components, avoiding the need to build such controllers from scratch.
Now playing controller from Apple Music, Mail & Podcasts Apple's apps.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Mimics Apple's Music and Podcasts apps with smooth animations and gestures, providing a drop-in solution for polished modal interfaces without building from scratch.
Offers fine-grained control over height, indicators, dismissal behavior, and corner radius, as shown in properties like customHeight and swipeToDismissEnabled for tailored modal experiences.
Works with UIScrollView, UITableView, and UICollectionView, allowing interactive dragging that blends with scrolling using SPStorkController.scrollViewDidScroll for enhanced usability.
Supports older iOS versions where native sheet controllers aren't available, making it ideal for apps with broad version support and legacy system requirements.
Relies on screen snapshots for presentation, which can cause visual artifacts, require manual updates via SPStorkController.updatePresentingController, and freeze during parent view scrolling, as admitted in the README.
To add navigation bars, developers must integrate the separate SPFakeBar library, increasing project complexity and dependency management beyond the core functionality.
Incorrect initialization of SPStorkTransitioningDelegate (e.g., direct assignment without retaining the instance) leads to weak property errors, requiring careful memory management to avoid crashes.