Commit 80a3754d by danieldahan

added optional callbacks for open and close operations

parent 595208d2
......@@ -48,7 +48,9 @@ class ViewController: UIViewController {
if menuView.opened {
menuView.close()
} else {
menuView.open()
menuView.open() { (item: MenuViewItem) in
(item.button as? MaterialButton)?.pulse()
}
}
}
......@@ -59,17 +61,26 @@ class ViewController: UIViewController {
/// Prepares the MenuView example.
private func prepareMenuViewExample() {
let image: UIImage? = UIImage(named: "ic_add_white")
let btn1: FabButton = FabButton()
btn1.setImage(image, forState: .Normal)
btn1.setImage(image, forState: .Highlighted)
btn1.addTarget(self, action: "handleOpenMenuView", forControlEvents: .TouchUpInside)
let btn2: FabButton = FabButton()
btn2.backgroundColor = MaterialColor.blue.base
btn2.setImage(image, forState: .Normal)
btn2.setImage(image, forState: .Highlighted)
let btn3: FabButton = FabButton()
btn3.backgroundColor = MaterialColor.green.base
btn3.setImage(image, forState: .Normal)
btn3.setImage(image, forState: .Highlighted)
let btn4: FabButton = FabButton()
btn4.backgroundColor = MaterialColor.yellow.base
btn4.setImage(image, forState: .Normal)
btn4.setImage(image, forState: .Highlighted)
menuView = MenuView(frame: view.bounds)
view.addSubview(menuView)
......
......@@ -82,33 +82,38 @@ public class MenuView : MaterialView {
}
}
public func open() {
public func open(completion: ((MenuViewItem) -> Void)? = nil) {
if let v: Array<MenuViewItem> = menuItems {
var base: MenuViewItem?
for var i: Int = 1, l: Int = v.count; i < l; ++i {
if nil == base {
base = v[0]
}
let item: MenuViewItem = v[i]
UIView.animateWithDuration(Double(i) * 0.15,
animations: { [unowned self] in
item.button.hidden = false
item.button.center.y = self.height - CGFloat(i + 1) * (item.button.bounds.height) - CGFloat(i) * 16
item.button.frame.origin.y = base!.button.frame.origin.y - CGFloat(i) * (self.itemSize.height) - CGFloat(i) * 16
},
completion: { _ in
(item.button as? MaterialButton)?.pulse()
completion?(item)
})
}
opened = true
}
}
public func close() {
public func close(completion: ((MenuViewItem) -> Void)? = nil) {
if let v: Array<MenuViewItem> = menuItems {
for var i: Int = 1, l: Int = v.count; i < l; ++i {
let item: MenuViewItem = v[i]
UIView.animateWithDuration(0.15,
animations: { [unowned self] in
item.button.center.y = self.height - item.button.bounds.height - 16
item.button.frame.origin.y = self.height - item.button.bounds.height - 16
},
completion: { _ in
item.button.hidden = true
completion?(item)
})
}
opened = false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment