交互式圆形菜单 0.1.1

InteractiveCircularMenu 0.1.1

CatchZeng 维护。



  • catchzeng

InteractiveCircularMenu

Version License Platform

交互式、回弹、可自定义(颜色、宽度、速度、角度)的圆形菜单。

示例

要运行示例项目,首先克隆仓库,然后在 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文件获取更多信息。