#JVFlowerMenu 是汉堡菜单和可能的 UITabBar 的快速简单替代品
JVFlowerMenu
不是一个控制器,而是一个可以用来控制任何 UI 视图内容的挂起的 UI 元素。以下是一个最终产品的快速示例
#设置
Cocoapods
pod 'JVFlowerMenu'
#限制
-
目前类不是 @UIDesignable 或 @UIInspectable。这意味着,如果您想添加它们,您必须自己添加约束到您的代码或分配帧之后。
-
如果在视图控制器的主视图上,将会有意外的行为。
-
您应用到菜单上的任何变换都将破坏其行为。
#示例
按照以下方式初始化 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)
}