- Notifications
You must be signed in to change notification settings - Fork82
Easily customizable floating button menu created with SwiftUI
License
exyte/FloatingButton
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Create main button view and a number of submenu buttons — both should be cast to
AnyViewtype.Pass both to
FloatingButtonconstructor: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).layoutDirection(.counterClockwise)
spacing - space between submenu buttonsinitialScaling - size multiplyer for submenu buttons when the menu is closedinitialOffset - offset for submenu buttons when the menu is closedinitialOpacity - opacity for submenu buttons when the menu is closedanimation - custom SwiftUI animation likeAnimation.easeInOut() orAnimation.spring()delays - delay for each submenu button's animation start- you can pass array of delays - one for each element- or you can passdelayDelta - then this same delay will be used for each elementmainZStackAlignment - main button and submenu buttons are contained in one ZStack (not an overlay so the menu has a correct size), you can change this ZStack's alignment with this parameterinverseZIndex - inverse zIndex of mainButton and the children. Use, for example, if you have a negative spacing and want to change the orderwholeMenuSize - pass CGSize binding to get updates of menu's size. Menu's size includes main button frame and all of elements' framesmenuButtonsSize - pass CGSize binding to get updates of combined menu elements' size
direction - position of submenu buttons relative to main menu buttonalignment - alignment of submenu buttons relative to main menu button
startAngleendAngleradius - distance between center of main button and centers of submenu buttonslayoutDirection - changes the button layout direction from the startAngle to the endAngle
To try the FloatingButton examples:
- Clone the repo
https://github.com/exyte/FloatingButton.git - Open
FloatingButtonExample.xcodeprojin the Xcode - Try it!
dependencies:[.package(url:"https://github.com/exyte/FloatingButton.git")]
- iOS 14.0+ / macOS 11.0+ / watchOS 7.0+
- Xcode 12+
PopupView - Toasts and popups library
AnchoredPopup - Anchored Popup grows "out" of a trigger view (similar to Hero animation)
Grid - The most powerful Grid container
ScalingHeaderScrollView - A scroll view with a sticky header which shrinks as you scroll
AnimatedTabBar - A tabbar with a number of preset animations
MediaPicker - Customizable media picker
Chat - Chat UI framework with fully customizable message cells, input view, and a built-in media picker
OpenAI Wrapper lib forOpenAI REST API
AnimatedGradient - Animated linear gradient
ConcentricOnboarding - Animated onboarding flow
ActivityIndicatorView - A number of animated loading indicators
ProgressIndicatorView - A number of animated progress indicators
FlagAndCountryCode - Phone codes and flags for every country
SVGView - SVG parser
LiquidSwipe - Liquid navigation animation
About
Easily customizable floating button menu created with SwiftUI
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors7
Uh oh!
There was an error while loading.Please reload this page.




