Commit bb66bcd0 by Daniel Dahan

development: prepared MenuController for release of 2.4.2

parent 33bd6c0f
...@@ -31,46 +31,44 @@ ...@@ -31,46 +31,44 @@
import UIKit import UIKit
extension UIViewController { extension UIViewController {
/** /**
A convenience property that provides access to the MenuController. A convenience property that provides access to the MenuController.
This is the recommended method of accessing the MenuController This is the recommended method of accessing the MenuController
through child UIViewControllers. through child UIViewControllers.
*/ */
public var menuController: MenuController? { public var menuController: MenuController? {
var viewController: UIViewController? = self var viewController: UIViewController? = self
while nil != viewController { while nil != viewController {
if viewController is MenuController { if viewController is MenuController {
return viewController as? MenuController return viewController as? MenuController
} }
viewController = viewController?.parent viewController = viewController?.parent
} }
return nil return nil
} }
} }
open class MenuController: RootController { open class MenuController: RootController {
open fileprivate(set) var blurView: UIView?
/// Reference to the MenuView. /// Reference to the MenuView.
@IBInspectable @IBInspectable
open let menu = Menu() open let menu = Menu()
open override func layoutSubviews() { open override func layoutSubviews() {
super.layoutSubviews() super.layoutSubviews()
rootViewController.view.frame = view.bounds rootViewController.view.frame = view.bounds
} }
/** /**
Prepares the view instance when intialized. When subclassing, Prepares the view instance when intialized. When subclassing,
it is recommended to override the prepare method it is recommended to override the prepare method
to initialize property values and other setup operations. to initialize property values and other setup operations.
The super.prepare method should always be called immediately The super.prepare method should always be called immediately
when subclassing. when subclassing.
*/ */
open override func prepare() { open override func prepare() {
super.prepare() super.prepare()
prepareMenu() prepareMenu()
} }
} }
extension MenuController { extension MenuController {
...@@ -90,21 +88,12 @@ extension MenuController { ...@@ -90,21 +88,12 @@ extension MenuController {
open func openMenu(completion: ((UIView) -> Void)? = nil) { open func openMenu(completion: ((UIView) -> Void)? = nil) {
if true == isUserInteractionEnabled { if true == isUserInteractionEnabled {
isUserInteractionEnabled = false isUserInteractionEnabled = false
UIView.animate(withDuration: 0.15, animations: { [weak self] in
if nil == blurView { guard let s = self else {
let blur = UIVisualEffectView(effect: UIBlurEffect(style: .light)) return
blurView = UIView() }
blurView?.layout(blur).edges() s.rootViewController.view.alpha = 0.15
view.layout(blurView!).edges() })
view.bringSubview(toFront: menu)
}
// UIView.animate(withDuration: 0.15, animations: { [weak self] in
// guard let s = self else {
// return
// }
// s.rootViewController.view.alpha = 0.15
// })
menu.open { [completion = completion] (view) in menu.open { [completion = completion] (view) in
completion?(view) completion?(view)
} }
...@@ -118,16 +107,12 @@ extension MenuController { ...@@ -118,16 +107,12 @@ extension MenuController {
*/ */
open func closeMenu(completion: ((UIView) -> Void)? = nil) { open func closeMenu(completion: ((UIView) -> Void)? = nil) {
if false == isUserInteractionEnabled { if false == isUserInteractionEnabled {
blurView?.removeFromSuperview() UIView.animate(withDuration: 0.15, animations: { [weak self] in
blurView = nil guard let s = self else {
return
}
// UIView.animate(withDuration: 0.15, animations: { [weak self] in s.rootViewController.view.alpha = 1
// guard let s = self else { })
// return
// }
// s.rootViewController.view.alpha = 1
// })
menu.close { [weak self] (view) in menu.close { [weak self] (view) in
guard let s = self else { guard let s = self else {
return return
......
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