A customizable iOS expandable button component that opens in four directions with configurable items and animations.
ExpandableButton is an open-source Swift library for iOS that provides a customizable expandable button UI component. It solves the problem of creating space-efficient floating action buttons that reveal additional actions when tapped, with support for four expansion directions and extensive styling options.
iOS developers building apps that require compact, interactive button menus, such as those implementing floating action buttons (FABs) or contextual action panels.
Developers choose ExpandableButton for its simplicity, flexibility, and native iOS integration—it offers a ready-to-use component with detailed customization without requiring complex custom UIView implementations.
Customizable and easy to use expandable button in Swift.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports expansion in four directions (left, right, up, down) with smooth animations, allowing flexible placement in UI layouts, as demonstrated in the GIF examples.
Offers detailed control over appearance, including arrow style, separator width, corner radius, and item properties like images and attributed titles, with numerous configurable properties listed in the README.
Provides easy-to-use open() and close() methods for managing the button state programmatically, along with a closeOnAction flag for automatic behavior.
Includes built-in haptic feedback (Taptic engine) that can be toggled with the isHapticFeedback property, enhancing user interaction without extra code.
Lacks built-in accessibility features like VoiceOver labels or traits, requiring manual work to make the component inclusive for users with disabilities.
Items must be defined during initialization with no clear API for dynamic updates, limiting flexibility in apps where button actions need to change based on context.
Built solely for UIKit, making it incompatible with SwiftUI projects without additional wrappers like UIViewControllerRepresentable, which adds complexity.