A simple cross-platform toolbar and custom input accessory view library for iOS and macOS, written in Swift.
Ribbon is a Swift library that provides a simple, cross-platform toolbar and custom input accessory view for iOS and macOS applications. It solves the problem of creating consistent, native-feeling toolbars and input accessories across Apple platforms with minimal code, supporting both JSON-based configuration and programmatic setup.
iOS and macOS developers looking to add customizable toolbars or input accessory views to their apps, particularly those who want a unified solution that works across both platforms with native integrations.
Developers choose Ribbon for its simplicity, cross-platform support, and flexibility—offering both JSON configuration for quick setup and programmatic control for dynamic toolbars, all while adhering to platform-specific UI guidelines like iOS 13 context menus.
🎀 A simple cross-platform toolbar/custom input accessory view library for iOS & macOS.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers a unified Swift API for both iOS and macOS toolbars, with platform-specific adaptations like iOS context menus and NSToolbar integration, reducing code duplication.
Enables quick setup via a JSON file for defining toolbar items and layouts, allowing prototyping without writing Swift code, as shown in the detailed configuration example.
Integrates modern iOS 13 context menus and supports dark mode automatically, adhering to Apple's design guidelines for a seamless user experience.
Supports push buttons, action items, and segmented controls, with subitems for complex menus, providing versatility for different toolbar needs.
The README explicitly lists 'Add documentation' as a ToDo item, which can hinder learning, debugging, and adoption for new users.
Admits in the ToDo section that UIKeyCommand is not implemented, limiting keyboard shortcut support and advanced accessibility options.
Requires @objc selectors for action handlers, increasing boilerplate and potentially clashing with modern Swift paradigms like SwiftUI or Combine.