SwiftUIMenu
SwiftUIMenu 是一个组件,允许您在应用程序中实现菜单导航模式。当用滑动或响应外部事件(如点击导航栏按钮)来显示时,菜单会呈现内容和一个选项列表。
要求
- iOS 13.0+
- macOS 10.15+
- watchOS 6.0+
- Swift 5.1+
安装
CocoaPods
pod 'SwiftUIMenu'
Swift Package Manager
打开 XCode
- 文件 -> Swift Packages -> 添加包依赖...
- 使用 URL https://github.com/fermoya/SwiftUIMenu.git
Carthage
github "fermoya/SwiftUIMenu"
使用方法
初始化
通过传入
- 绑定到选中的索引
- 绑定到确定
Menu
是否打开 - 填充菜单的项的数组
ViewBuilder
用于构建每一行ViewBuilder
用于构建选中项的内容
Menu(indexSelected: self.$index,
isOpen: self.$isMenuOpen,
menuItems: menuItems,
menuItemRow: { index in
Text("Option \(index)")
},
menuItemContent: { section in
Text("Welcome to section \(section)")
})
})
UI 定制化
有许多视图修改器可用于自定义您的 Menu
并使其更个性化。您可以指定其位置、样式或添加标题等。
默认情况下,Menu
被配置为
- 从左侧显示
- 具有重叠样式
- 占用整个屏幕
- 允许拖动
对齐方式
更改菜单的位置,使其从屏幕的左侧或右侧显示。
Menu(...)
.alignment(.right)
左侧菜单
右侧菜单
页眉 & 页脚
使用这些修饰符为 菜单
添加页眉和/或页脚。
Menu(...)
.header { MyMenuHeader() }
.footer { MyMenuFooter() }
<img src="resources/header-footer.gif" alt=带有页眉和页脚的菜单" height="640"/>
样式
为 菜单
的显示方式添加不同的效果。
Menu(...)
.style(.stretch)
重叠
推送
拉伸
更多功能
您还可以
- 使用
revealRatio
改变菜单
打开时占用的可用空间比率 - 使用
disableDragging
禁用DragGesture
- 通过简单点击,使
Menu
内容消失,使用allowContentTap()
- 当
Menu
打开时,使用shadeContent
遮罩内容
Menu(...)
.revealRatio(0.8)
.shadeContent()
示例项目
更多详细信息,请查看示例应用。
欢迎您的反馈,请随时发起问题或通过[email protected]与我联系。
请自由协作,共同改进这个框架。
许可协议
SwiftUIMenu
可在MIT许可协议下使用。查看许可文件获取更多信息。