FloatingButton
Easily customizable floating button menu created with SwiftUI
We are a development agency building phenomenal apps.
Usage
-
Create main button view and a number of submenu buttons — both should be cast to
AnyView
type. -
Pass both to
FloatingButton
constructor:FloatingButton(mainButtonView: mainButton, buttons: buttons)
-
You may also pass a binding which will determine if the menu is currently open. You may use this to close the menu on any submenu button tap for example.
FloatingButton(mainButtonView: mainButton, buttons: buttons, isOpen: $isOpen)
- Chain
.straight()
or.circle()
to specify desired menu type. - Chain whatever you like afterwards. For example:
FloatingButton(mainButtonView: mainButton, buttons: textButtons) .straight() .direction(.top) .alignment(.left) .spacing(10) .initialOffset(x: -1000) .animation(.spring()) FloatingButton(mainButtonView: mainButton2, buttons: buttonsImage.dropLast()) .circle() .startAngle(3/2 * .pi) .endAngle(2 * .pi) .radius(70)
Universal options
spacing
- space between submenu buttons
initialScaling
- size multiplyer for submenu buttons when the menu is closed
initialOffset
- offset for submenu buttons when the menu is closed
initialOpacity
- opacity for submenu buttons when the menu is closed
animation
- custom SwiftUI animation like Animation.easeInOut()
or Animation.spring()
delays
- delay for each submenu button's animation start
Straight menu only options
direction
- position of submenu buttons relative to main menu button
alignment
- alignment of submenu buttons relative to main menu button
Circle only options
startAngle
endAngle
radius
Examples
To try out the FloatingButton examples:
- Clone the repo
git clone [email protected]:exyte/FloatingButton.git
. - Open terminal and run
cd <FloatingButtonRepo>/Example
. - Run
pod install
to install all dependencies. - Run
xed .
to open project in the Xcode. - Try it!
Installation
CocoaPods
pod 'FloatingButton'
Carthage
github "Exyte/FloatingButton"
Manually
Drop FloatingButton.swift into your project.
Requirements
- iOS 13+ / watchOS 13+ / tvOS 13+ / macOS 10.15+
- Xcode 11+