FloatingButton
使用 SwiftUI 创建的易于定制的浮动按钮菜单
我们是一家开发公司,致力于打造卓越的应用。
用法
-
创建主按钮视图和多个子菜单按钮 — 两者都应转换为
AnyView
类型。 -
将它们传递给
FloatingButton
构造函数FloatingButton(mainButtonView: mainButton, buttons: buttons)
-
您还可以传递一个绑定,该绑定将确定菜单是否当前开放。您可以使用此功能在子菜单按钮点击时关闭菜单,例如。
FloatingButton(mainButtonView: mainButton, buttons: buttons, isOpen: $isOpen)
- 链接
.straight()
或.circle()
以指定所需的菜单类型。 - 随后可以链接任何您想要的操作。例如
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)
通用选项
spacing
- 子菜单按钮之间的间隔
initialScaling
- 菜单关闭时子菜单按钮的大小乘数
initialOffset
- 菜单关闭时子菜单按钮的偏移量
initialOpacity
- 菜单关闭时子菜单按钮的透明度
animation
- 自定义 SwiftUI 动画,如 Animation.easeInOut()
或 Animation.spring()
delays
- 每个子菜单按钮动画开始的延迟 - 您可以传递延迟数组的延迟 - 一个用于每个元素 - 或者您可以传递 delayDelta
- 然后此相同的延迟将用于每个元素 wholeMenuSize
- 传递 CGSize 绑定以获取菜单大小的更新。菜单的大小包括主要按钮框架以及所有元素的框架 menuButtonsSize
- 传递 CGSize 绑定以获取组合菜单元素大小的更新
仅直链菜单选项
direction
- 子菜单按钮相对于主菜单按钮的位置
alignment
- 子菜单按钮相对于主菜单按钮的对齐方式
仅圆形选项
起始角度
结束角度
radius
- 主按钮中心与子菜单按钮中心的距离
示例
尝试 FloatingButton 的示例
- 克隆代码库
git clone [email protected]:exyte/FloatingButton.git
. - 打开
<FloatingButtonRepo>/Example
. - 运行
Example.xcodeproj
- 框架作为本地 SPM 包导入。 - 试试吧!
安装
Swift 包管理器
dependencies: [
.package(url: "https://github.com/exyte/FloatingButton.git")
]
CocoaPods
pod 'FloatingButton'
Carthage
github "Exyte/FloatingButton"
需求
- iOS 14.0+ / macOS 11.0+ / tvOS 14.0+ / watchOS 7.0+
- Xcode 12+
我们的其他开源SwiftUI库
PopupView - 消息和弹出视图库
Grid - 最强大的网格容器
ScalingHeaderScrollView - 具有粘性头部并随滚动缩小的滚动视图
AnimatedTabBar - 具有预设动画的标签栏
MediaPicker - 可定制的媒体选择器
Chat - 可全定制消息单元格、输入视图和内置媒体选择器的聊天界面框架
ConcentricOnboarding - 动画引导流程
ActivityIndicatorView - 许多动画加载指示器
ProgressIndicatorView - 许多动画进度指示器
SVGView - SVG解析器
LiquidSwipe - 液体导航动画