A custom iOS modal controller with smooth bottom-up transitions and adjustable height for settings panels.
SPLarkController is a Swift library for iOS that provides custom modal presentation controllers with smooth bottom-up transitions. It solves the need for elegant, adjustable-height modals—perfect for settings panels, action sheets, or any interface that slides up from the screen bottom. Developers can easily integrate it to enhance user interactions without building complex animation systems from scratch.
iOS developers building apps that require polished modal interfaces, such as settings screens, action sheets, or bottom-up panels. It’s especially useful for those seeking native-like transitions with minimal code.
Developers choose SPLarkController for its simplicity and polished animations—offering a ready-to-use solution with adjustable height, snapshot-based transitions to avoid compatibility issues, and a dedicated settings controller subclass. It’s lightweight, supports Swift 4.2+, and integrates seamlessly with existing iOS projects.
Custom transition between controllers. Settings controller for your iOS app.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Custom transitioning delegate ensures polished bottom-up animations that mimic iOS native feel, as demonstrated in the preview GIF with fluid presentation and dismissal.
Allows setting initial custom height and updating it post-presentation via updateHeight(), enabling flexible modal sizing for varying content without restarting transitions.
SPLarkSettingsController subclass provides a quick-start for implementing settings panels, reducing boilerplate code as shown in the example project.
Uses screen snapshots to avoid customization conflicts during transitions, ensuring reliability across different view hierarchies, though it requires manual updates for dynamic content.
Requires manual calls to SPLarkController.updatePresentingController() for dynamic parent views, adding maintenance overhead and potential for visual staleness.
No built-in SwiftUI support, forcing developers to use UIViewControllerRepresentable wrappers, which complicates integration in modern iOS apps.
Specific warnings in the README about incorrect delegate initialization (e.g., avoiding weak property errors) can lead to runtime issues if not followed carefully.