A Swift library that replicates the iOS Maps app's bottom drawer UI for custom navigation and content presentation.
Pulley is an open-source iOS library that replicates the sliding drawer interface from Apple's Maps app. It enables developers to add a customizable bottom sheet or side panel navigation component to their apps, supporting multiple display modes and drawer positions. The library solves the need for a native-feeling, flexible drawer UI without requiring custom implementations from scratch.
iOS developers building apps that require drawer-based navigation, bottom sheets, or panel interfaces, particularly those aiming to match Apple's design language and behavior.
Developers choose Pulley for its accurate emulation of iOS Maps UI, ease of integration via Interface Builder or code, and extensive customization options for drawer behavior and appearance, all while maintaining compatibility with modern iOS features like safe areas.
A library to imitate the iOS 10 Maps UI.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Accurately replicates the look, feel, and bounce animations of iOS Maps' drawer, including proper safe area handling for modern devices like iPhone X.
Supports bottom, panel, compact, and automatic modes to adapt to different device sizes and orientations, as detailed in the README.
Can be set up visually with container views and segues, reducing code and speeding up prototyping for iOS developers.
Allows adjustment of corner radius, shadow properties, background dimming, and drawer positions via delegate methods, offering high visual control.
No native SwiftUI support, requiring additional work with UIViewControllerRepresentable for modern iOS apps using SwiftUI's declarative syntax.
Drawer content views are made 20pt too long to account for bounce animations, necessitating careful UI adjustments that can be error-prone.
Version updates like 2.5.0 introduced significant renaming changes, potentially disrupting existing codebases without thorough migration, as noted in the README.