Commit 3f51240e by Daniel Dahan

updated App example

parent dfd7d96e
......@@ -52,59 +52,71 @@ class AppMenuViewController: MenuViewController {
/**
*/
func handleBtn2() {
if navigationBarViewController?.mainViewController is BlueViewController {
if menuViewController?.mainViewController is BlueViewController {
return
}
handleMenu()
menuViewController?.transitionFromMainViewController(BlueViewController())
navigationBarViewController?.navigationBarView.titleLabel?.text = "Blue"
closeMenu { [weak self] in
self?.menuViewController?.transitionFromMainViewController(BlueViewController(), options: [.TransitionCrossDissolve])
}
}
/**
*/
func handleBtn3() {
if navigationBarViewController?.mainViewController is GreenViewController {
if menuViewController?.mainViewController is GreenViewController {
return
}
handleMenu()
menuViewController?.transitionFromMainViewController(GreenViewController())
navigationBarViewController?.navigationBarView.titleLabel?.text = "Green"
closeMenu { [weak self] in
self?.menuViewController?.transitionFromMainViewController(GreenViewController(), options: [.TransitionCrossDissolve])
}
}
/**
*/
func handleBtn4() {
if navigationBarViewController?.mainViewController is FeedViewController {
if (menuViewController?.mainViewController as? NavigationBarViewController)?.mainViewController is FeedViewController {
return
}
handleMenu()
menuViewController?.transitionFromMainViewController(AppNavigationBarViewController(mainViewController: FeedViewController()))
navigationBarViewController?.navigationBarView.titleLabel?.text = "Feed"
closeMenu { [weak self] in
self?.menuViewController?.transitionFromMainViewController(AppNavigationBarViewController(mainViewController: FeedViewController()), options: [.TransitionCrossDissolve])
}
}
/// Opens the menu with a callback.
func openMenu(completion: (() -> Void)? = nil) {
(menuView.menu.views?.first as? MaterialButton)?.animate(MaterialAnimation.rotate(0.125))
menuView.menu.open { [weak self] (v: UIView) in
(v as? MaterialButton)?.pulse()
if self?.menuView.menu.views?.last == v {
completion?()
}
}
}
/// Closes the menu with a callback.
func closeMenu(completion: (() -> Void)? = nil) {
(menuView.menu.views?.first as? MaterialButton)?.animate(MaterialAnimation.rotate(-0.125))
menuView.close(completion)
}
/// Handle the menuView touch event.
func handleMenu() {
var rotate: Double = -0.125
if true == menuView.menu.opened {
hideMenuBackdrop()
menuView.menu.close()
closeMenu()
} else {
showMenuBackdrop()
rotate = 0.125
menuView.menu.open() { (v: UIView) in
(v as? MaterialButton)?.pulse()
}
openMenu()
}
(menuView.menu.views?.first as? MaterialButton)?.animate(MaterialAnimation.rotate(rotate))
}
/// Prepares view.
private func prepareView() {
view.backgroundColor = MaterialColor.white
view.backgroundColor = MaterialColor.black
}
/// Prepares the add button.
......@@ -141,7 +153,6 @@ class AppMenuViewController: MenuViewController {
btn4.addTarget(self, action: "handleBtn4", forControlEvents: .TouchUpInside)
// Initialize the menu and setup the configuration options.
menuView.menu.direction = .Up
menuView.menu.baseViewSize = baseViewSize
menuView.menu.views = [btn1, btn2, btn3, btn4]
......
......@@ -81,6 +81,7 @@ class AppNavigationBarViewController: NavigationBarViewController {
guard let v: AppSearchBarViewController = AppSearchBarViewController(mainViewController: SearchListViewController()) else {
return
}
navigationBarViewController?.floatingViewController = v
}
......
......@@ -73,9 +73,9 @@ public func MaterialAnimationTransitionSubTypeToValue(direction: MaterialAnimati
case .Left:
return kCATransitionFromLeft
case .Top:
return kCATransitionFromTop
case .Bottom:
return kCATransitionFromBottom
case .Bottom:
return kCATransitionFromTop
}
}
......
......@@ -48,6 +48,24 @@ public class MenuView : MaterialPulseView {
clipsToBounds = false
backgroundColor = nil
}
/// Opens the menu with a callback.
public func open(completion: (() -> Void)? = nil) {
menu.open { [weak self] (v: UIView) in
if self?.menu.views?.last == v {
completion?()
}
}
}
/// Closes the menu with a callback.
public func close(completion: (() -> Void)? = nil) {
menu.close { [weak self] (v: UIView) in
if self?.menu.views?.last == v {
completion?()
}
}
}
public override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
/**
......
......@@ -49,18 +49,32 @@ public extension UIViewController {
}
public class NavigationBarViewController: UIViewController {
/// Reference to the NavigationBarView.
public private(set) lazy var navigationBarView: NavigationBarView = NavigationBarView()
/// Internal reference to the floatingViewController.
private var internalFloatingViewController: UIViewController?
/// Reference to the NavigationBarView.
public private(set) lazy var navigationBarView: NavigationBarView = NavigationBarView()
/// A floating UIViewController.
public var floatingViewController: UIViewController? {
get {
return internalFloatingViewController
}
set(value) {
if let v: UIViewController = internalFloatingViewController {
sideNavigationViewController?.enabled = true
UIView.animateWithDuration(0.5,
animations: { [unowned self] in
v.view.center.y = 2 * self.view.bounds.height
}) { [unowned self] _ in
v.willMoveToParentViewController(nil)
v.view.removeFromSuperview()
v.removeFromParentViewController()
self.internalFloatingViewController = nil
}
}
if let v: UIViewController = value {
/**
Disable the sideNavigationViewController from opening while in
......@@ -79,24 +93,11 @@ public class NavigationBarViewController: UIViewController {
// Animate the noteButton out and the noteViewController! in.
v.view.hidden = false
internalFloatingViewController = v
UIView.animateWithDuration(0.5,
animations: { [unowned self] in
v.view.center.y = self.view.bounds.height / 2
})
} else if let v: UIViewController = internalFloatingViewController {
sideNavigationViewController?.enabled = true
internalFloatingViewController = nil
UIView.animateWithDuration(0.5,
animations: { [unowned self] in
v.view.center.y = 2 * self.view.bounds.height
}) { _ in
v.willMoveToParentViewController(nil)
v.view.removeFromSuperview()
v.removeFromParentViewController()
}) { [unowned self] _ in
self.internalFloatingViewController = v
}
}
}
......
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