SimpleCircleMenu 1.0.3

SimpleCircleMenu 1.0.3

Pavel Chehov 维护。



 
另可供测试运行,运行以下命令:
pod try SimpleCircleMenu>= 0
依赖于~> 6.0
 

  • GitHub 仓库
  • 在 CocoaPods.org 上的页面

Version License Platform Total Downloads Monthly Downloads Weekly Downloads

eGo-CMS

FB: pavel.chehov.9

======================================================

GitHub 仓库

文档

示例

需求

  • iOS 11.0及以上

许可

SimpleCircleMenu遵循MIT许可证。有关更多信息,请参阅LICENSE文件。版权所有 © 2018 EGO创意创新,由Pavel Chehov维护

安装

CocoaPods是Cocoa项目的依赖管理器。您可以使用以下命令安装它

$ gem install cocoapods

要使用CocoaPods将SimpleCircleMenu集成到您的Xcode项目中,在您的Podfile中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!

pod 'SimpleCircleMenu'

然后,运行以下命令

$ pod install

文档

属性

  • unfocusedBackgroundColor: UIColor - 按钮在常规状态下的背景颜色。
  • focusedBackgroundColor: UIColor - 按钮在按下状态下的背景颜色。
  • unfocusedIconColor: UIColor - 按钮在常规状态下的图标颜色。
  • focusedIconColor: UIColor - 按钮在按下状态下的图标颜色。
  • circleMenuItems: [CircleMenuItemModel] - 此属性包含按钮的模型序列。

方法

  • attach(viewController: UIViewController) - 将菜单添加到当前viewController的视图底部右角

限制

通用圆菜单必须包含3到9个按钮。每个子菜单应包含1到5个按钮。我们根据UIViewController的通用视图计算菜单框架。这意味着如果您想在屏幕底部安装横幅广告,您将看到菜单按钮在您的横幅广告之上。CircleMenuItemModel具有初始化程序,包括id、图标源以及如果存在则包含子菜单的数组。在这种情况下,用户应生成唯一的id,因为按钮菜单点击识别是通过id实现的。TouchUpInside事件处理程序代理必须遵守CircleMenuDelegate协议,并重写menuItemSelected(id: Int)方法,其中id是按钮菜单标识符。

圆形菜单使用本地的弹簧动画效果。我们使用带有透明背景的UIView来放置所有菜单按钮。但使用位于圆形菜单视图下方的视图并不会有问题,因为我们重写了hitTest(:CGPoint,:UIEvent?)方法。为了性能考虑,我们仅使用6个物理按钮并进行缓存。汉堡按钮使用Lottie动画。

模型

public class CircleMenuItemModel {
    public var id: Int?
    public var imageSource: UIImage?
    public var children: [CircleMenuItemModel]?
    public var hasChildren: Bool

    public init()
    public init(id: Int?, imageSource: UIImage?, children: [CircleMenuItemModel]? = nil)
}

示例

import SimpleCircleMenu

class ViewController: UIViewController, CircleMenuDelegate {
    var icons = [String]()
    let submenuIds = [2,3]

    override func viewDidLoad() {
        super.viewDidLoad()

        icons.append(contentsOf: ["icImage", "icPanorama", "icVideo",
        "icPhoto","icTimelapse","icMacro", "icPortrait", "icSeries", "icTimer",
        "icSixteenToNine", "icOneToOne", "icHDR"])

        let circleMenu = CircleMenu()
        circleMenu.attach(to: self)
        circleMenu.delegate = self

        //here you can customize needed properties
        circleMenu.circleMenuItems = createCircleMenuItems(count: 4)
        circleMenu.focusedIconColor = UIColor.red
        circleMenu.unfocusedIconColor = UIColor.green
        circleMenu.focusedBackgroundColor = UIColor.black
        circleMenu.unfocusedBackgroundColor = UIColor.yellow
    }

    func menuItemSelected(id: Int) {
        //your click event handler
    }

    func menuDidOpen() {
         
    }
    
    func menuDidClose() {
        
    }

    private func createCircleMenuItems(count: Int) -> [CircleMenuItemModel] {
        var menuModels = [CircleMenuItemModel]()
        for i in 0..<count {
            let menuModel = CircleMenuItemModel(id: i, imageSource: UIImage.init(named: icons[i]))
            if submenuIds.contains(i){
                for j in  9..<12 {
                    let submenuModel = CircleMenuItemModel(id: j, imageSource: UIImage.init(named: icons[j]))
                    menuModel.children!.append(submenuModel)
                }
            }
            menuModels.append(menuModel)
        }
        return menuModels
    }
}

License