Commit 80a3754d by danieldahan

added optional callbacks for open and close operations

parent 595208d2
...@@ -48,7 +48,9 @@ class ViewController: UIViewController { ...@@ -48,7 +48,9 @@ class ViewController: UIViewController {
if menuView.opened { if menuView.opened {
menuView.close() menuView.close()
} else { } else {
menuView.open() menuView.open() { (item: MenuViewItem) in
(item.button as? MaterialButton)?.pulse()
}
} }
} }
...@@ -59,17 +61,26 @@ class ViewController: UIViewController { ...@@ -59,17 +61,26 @@ class ViewController: UIViewController {
/// Prepares the MenuView example. /// Prepares the MenuView example.
private func prepareMenuViewExample() { private func prepareMenuViewExample() {
let image: UIImage? = UIImage(named: "ic_add_white")
let btn1: FabButton = FabButton() let btn1: FabButton = FabButton()
btn1.setImage(image, forState: .Normal)
btn1.setImage(image, forState: .Highlighted)
btn1.addTarget(self, action: "handleOpenMenuView", forControlEvents: .TouchUpInside) btn1.addTarget(self, action: "handleOpenMenuView", forControlEvents: .TouchUpInside)
let btn2: FabButton = FabButton() let btn2: FabButton = FabButton()
btn2.backgroundColor = MaterialColor.blue.base btn2.backgroundColor = MaterialColor.blue.base
btn2.setImage(image, forState: .Normal)
btn2.setImage(image, forState: .Highlighted)
let btn3: FabButton = FabButton() let btn3: FabButton = FabButton()
btn3.backgroundColor = MaterialColor.green.base btn3.backgroundColor = MaterialColor.green.base
btn3.setImage(image, forState: .Normal)
btn3.setImage(image, forState: .Highlighted)
let btn4: FabButton = FabButton() let btn4: FabButton = FabButton()
btn4.backgroundColor = MaterialColor.yellow.base btn4.backgroundColor = MaterialColor.yellow.base
btn4.setImage(image, forState: .Normal)
btn4.setImage(image, forState: .Highlighted)
menuView = MenuView(frame: view.bounds) menuView = MenuView(frame: view.bounds)
view.addSubview(menuView) view.addSubview(menuView)
......
...@@ -82,33 +82,38 @@ public class MenuView : MaterialView { ...@@ -82,33 +82,38 @@ public class MenuView : MaterialView {
} }
} }
public func open() { public func open(completion: ((MenuViewItem) -> Void)? = nil) {
if let v: Array<MenuViewItem> = menuItems { if let v: Array<MenuViewItem> = menuItems {
var base: MenuViewItem?
for var i: Int = 1, l: Int = v.count; i < l; ++i { for var i: Int = 1, l: Int = v.count; i < l; ++i {
if nil == base {
base = v[0]
}
let item: MenuViewItem = v[i] let item: MenuViewItem = v[i]
UIView.animateWithDuration(Double(i) * 0.15, UIView.animateWithDuration(Double(i) * 0.15,
animations: { [unowned self] in animations: { [unowned self] in
item.button.hidden = false 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 completion: { _ in
(item.button as? MaterialButton)?.pulse() completion?(item)
}) })
} }
opened = true opened = true
} }
} }
public func close() { public func close(completion: ((MenuViewItem) -> Void)? = nil) {
if let v: Array<MenuViewItem> = menuItems { if let v: Array<MenuViewItem> = menuItems {
for var i: Int = 1, l: Int = v.count; i < l; ++i { for var i: Int = 1, l: Int = v.count; i < l; ++i {
let item: MenuViewItem = v[i] let item: MenuViewItem = v[i]
UIView.animateWithDuration(0.15, UIView.animateWithDuration(0.15,
animations: { [unowned self] in 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 completion: { _ in
item.button.hidden = true item.button.hidden = true
completion?(item)
}) })
} }
opened = false 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