创建主按钮视图和一些子菜单按钮 — 它们都应转换为 AnyView
类型。
将两者传递给 FloatingButton
构造函数
FloatingButton(mainButtonView: mainButton, buttons: buttons)
您还可以传递一个 binding,它将确定菜单当前是否打开。 例如,您可以使用它在任何子菜单按钮点击时关闭菜单。
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)
.layoutDirection(.counterClockwise)
spacing
- 子菜单按钮之间的间距
initialScaling
- 菜单关闭时子菜单按钮的尺寸倍数
initialOffset
- 菜单关闭时子菜单按钮的偏移量
initialOpacity
- 菜单关闭时子菜单按钮的不透明度
animation
- 自定义 SwiftUI 动画,例如 Animation.easeInOut()
或 Animation.spring()
delays
- 每个子菜单按钮的动画启动延迟 - 您可以传递延迟数组(每个元素一个),或者您可以传递 delayDelta
- 然后每个元素将使用相同的延迟mainZStackAlignment
- 主按钮和子菜单按钮包含在一个 ZStack 中(而不是覆盖层,因此菜单具有正确的大小),您可以使用此参数更改此 ZStack 的对齐方式 inverseZIndex
- 主按钮和子元素的反向 zIndex。 例如,如果您有负间距并想要更改顺序,请使用此选项 wholeMenuSize
- 传递 CGSize binding 以获取菜单大小的更新。 菜单大小包括主按钮框架和所有元素框架 menuButtonsSize
- 传递 CGSize binding 以获取组合菜单元素大小的更新
direction
- 子菜单按钮相对于主菜单按钮的位置
alignment
- 子菜单按钮相对于主菜单按钮的对齐方式
startAngle
endAngle
radius
- 主按钮中心和子菜单按钮中心之间的距离
layoutDirection
- 从 startAngle 到 endAngle 更改按钮布局方向
要试用 FloatingButton 示例
git clone git@github.com:exyte/FloatingButton.git
。<FloatingButtonRepo>/Example
。Example.xcodeproj
- 框架作为本地 SPM 包导入。dependencies: [
.package(url: "https://github.com/exyte/FloatingButton.git")
]
pod 'FloatingButton'
github "Exyte/FloatingButton"
PopupView - Toast 和弹出窗口库
Grid - 最强大的 Grid 容器
ScalingHeaderScrollView - 带有粘性标题的滚动视图,该标题在您滚动时缩小
AnimatedTabBar - 带有多个预设动画的选项卡栏
MediaPicker - 可自定义的媒体选择器
Chat - 具有完全可自定义的消息单元格、输入视图和内置媒体选择器的聊天 UI 框架
OpenAI OpenAI REST API 的包装器库
AnimatedGradient - 动画线性渐变
ConcentricOnboarding - 动画引导流程
ActivityIndicatorView - 许多动画加载指示器
ProgressIndicatorView - 许多动画进度指示器
FlagAndCountryCode - 每个国家/地区的电话代码和标志
SVGView - SVG 解析器
LiquidSwipe - 流体导航动画