InteractiveCircularMenu
交互式、回弹、可自定义(颜色、宽度、速度、角度)的圆形菜单。
示例
要运行示例项目,首先克隆仓库,然后在 Example 目录下运行 pod install
安装
InteractiveCircularMenu 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'InteractiveCircularMenu'
概念
起始角度偏移
速度比
交互速度,默认为1.0。
环形宽度
间隔角度
最大角度
可以滚动的最大角度。
最小角度
可以滚动的最小角度。
最大回弹角度
回弹的最大角度,默认为 maxAngle - spacingAngle。
最小回弹角度
回弹的最小角度,默认为 minAngle + spacingAngle。
使用
初始化交互式圆形菜单和设置数据源 & 委托
menuView.dataSource = self
menuView.delegate = self
设置菜单颜色你喜欢。
menuView.menuColor = UIColor.white
数据源改变时重新加载。
menuView.reload()
实现数据源 & 委托
extension ViewController: InteractiveCircularMenuDataSource {
func numberOfItems(in menu: InteractiveCircularMenu) -> Int {
return items.count
}
func menu(_ menu: InteractiveCircularMenu, itemAt index: Int) -> CircularMenuItem {
return items[index]
}
}
extension ViewController: InteractiveCircularMenuDelegate {
func menu(_ menu: InteractiveCircularMenu, didSelectAt index: Int) {
AlertControllerBuilder(title: "Tip",
message: "Click:\(index+1)").addAction(title: "OK") { (_) in
}.build().show()
}
func circularWidth(in menu: InteractiveCircularMenu) -> CGFloat {
return 80
}
func menu(_ menu: InteractiveCircularMenu, itemSizeAt index: Int) -> CGSize {
let width = circularWidth(in: menu)
return CGSize(width: width*0.9, height: width*0.9)
}
func startAngleOffset(_ menu: InteractiveCircularMenu) -> CGFloat {
return 60
}
func spacingAngle(_ menu: InteractiveCircularMenu) -> CGFloat {
return 30
}
func maxAngle(_ menu: InteractiveCircularMenu) -> CGFloat {
return startAngleOffset(menu) + 2*spacingAngle(menu)
}
func minAngle(_ menu: InteractiveCircularMenu) -> CGFloat {
let offset = startAngleOffset(menu)
let spacing = spacingAngle(menu)
return offset-spacing*CGFloat(items.count-1)
}
}
作者
catchzeng, [email protected]
许可
InteractiveCircularMenu 采用MIT许可。请参阅LICENSE文件获取更多信息。