创建主按钮视图和一些子菜单按钮 — 它们都应转换为 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 - 流体导航动画