JVFlowerMenu 1.0.10

JVFlowerMenu 1.0.10

Jon Vogel 维护。



  • Jon Vogel

#JVFlowerMenu 是汉堡菜单和可能的 UITabBar 的快速简单替代品

JVFlowerMenu 不是一个控制器,而是一个可以用来控制任何 UI 视图内容的挂起的 UI 元素。以下是一个最终产品的快速示例

menuGIF

#设置

Cocoapods

pod 'JVFlowerMenu'

#限制

  1. 目前类不是 @UIDesignable 或 @UIInspectable。这意味着,如果您想添加它们,您必须自己添加约束到您的代码或分配帧之后。

  2. 如果在视图控制器的主视图上,将会有意外的行为。

  3. 您应用到菜单上的任何变换都将破坏其行为。

#示例

按照以下方式初始化 JVFlowerMenu

let menu = JVFlowerMenu(withImage: nil, andTitle: nil)

使用 nil 图像初始化将默认为汉堡菜单的绘画。标题为 nil 将仅生成标题内容。

然后您可以添加 舞踏者 如此

menu.addPedal(withImage: nil, withTitle: nil)
menu.addPedal(withImage: nil, withTitle: nil)
menu.addPedal(withImage: nil, withTitle: nil)

如果为 舞踏者 传递 nil 图像,它将默认为圆形的绘画。标题为 nil 将不显示任何内容。

然后您可以成为代理并在这几种方法中得到通知

menu.delegate = self

//MARK: Delegate Functions

public func flowerMenuDidSelectPedalWithID(_ theMenu: JVFlowerMenu, pedal: Pedal) {
    print("\(pedal.ID) Selected")
}

public func flowerMenuDidExpand() {
    print("Flower Menu expanded")
}

public func flowerMenuDidRetract() {    
    print("Flower Menu Retracted")
}

您可以通过改变一些属性来操控菜单的行为

menu.startAngle = 90.0
menu.pedalDistance = 200
menu.pedalSpace = 20
menu.stagger = 0

最后,这里是一些添加约束的编程设置代码

override func viewDidLoad() {
    self.view.addSubview(menu)
    self.constrain()
}

func constrain() {
    var constraints = [NSLayoutConstraint]()
    let vertical = NSLayoutConstraint.constraints(withVisualFormat: "V:|-30-[pedal]", options: [], metrics: nil, views: ["pedal": self.menu])
    constraints.append(contentsOf: vertical)
    let horizontal = NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[pedal]", options: [], metrics: nil, views: ["pedal": self.menu])
    constraints.append(contentsOf: horizontal)
    self.view.addConstraints(constraints)
}