Commit d285dc36 by Daniel Dahan

Merge pull request #10 from GraphKit/issue-8

refactored SideNav
parents 07e11946 2b49143c
...@@ -104,7 +104,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -104,7 +104,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
:name: isRightContainerOpened :name: isRightContainerOpened
*/ */
public var isRightContainerOpened: Bool { public var isRightContainerOpened: Bool {
return rightViewContainer.frame.origin.x == rightOrigin - rightViewContainer.frame.size.width return rightViewContainer.frame.origin.x == rightOriginX - rightViewContainer.frame.size.width
} }
/** /**
...@@ -170,9 +170,9 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -170,9 +170,9 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
public var leftPanGesture: UIPanGestureRecognizer? public var leftPanGesture: UIPanGestureRecognizer?
/** /**
:name: leftTapGetsture :name: leftTapGesture
*/ */
public var leftTapGetsture: UITapGestureRecognizer? public var leftTapGesture: UITapGestureRecognizer?
/** /**
:name: rightPanGesture :name: rightPanGesture
...@@ -186,16 +186,16 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -186,16 +186,16 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
public var rightTapGesture: UITapGestureRecognizer? public var rightTapGesture: UITapGestureRecognizer?
// //
// :name: leftOrigin // :name: leftOriginX
// //
private var leftOrigin: CGFloat { private var leftOriginX: CGFloat {
return -options.leftViewContainerWidth return -options.leftViewContainerWidth
} }
// //
// :name: rightOrigin // :name: rightOriginX
// //
private var rightOrigin: CGFloat { private var rightOriginX: CGFloat {
return view.bounds.width return view.bounds.width
} }
...@@ -270,17 +270,17 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -270,17 +270,17 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
leftViewContainer.hidden = true leftViewContainer.hidden = true
rightViewContainer.hidden = true rightViewContainer.hidden = true
coordinator.animateAlongsideTransition(nil) { _ in coordinator.animateAlongsideTransition(nil) { _ in
self.closeWindow() self.toggleWindow()
self.backdropViewContainer.layer.opacity = 0 self.backdropViewContainer.layer.opacity = 0
self.mainViewContainer.transform = CGAffineTransformMakeScale(1, 1) self.mainViewContainer.transform = CGAffineTransformMakeScale(1, 1)
self.isUserInteractionEnabled = true self.isUserInteractionEnabled = true
self.leftViewContainer.frame.origin.x = self.leftOrigin self.leftViewContainer.frame.origin.x = self.leftOriginX
self.leftViewContainer.hidden = false self.leftViewContainer.hidden = false
self.removeShadow(self.leftViewContainer) self.removeShadow(self.leftViewContainer)
self.prepareLeftGestures() self.prepareLeftGestures()
self.rightViewContainer.frame.origin.x = self.rightOrigin self.rightViewContainer.frame.origin.x = self.rightOriginX
self.rightViewContainer.hidden = false self.rightViewContainer.hidden = false
self.removeShadow(self.rightViewContainer) self.removeShadow(self.rightViewContainer)
self.prepareRightGestures() self.prepareRightGestures()
...@@ -305,7 +305,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -305,7 +305,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
:name: openLeftViewContainer :name: openLeftViewContainer
*/ */
public func openLeftViewContainer(velocity: CGFloat = 0) { public func openLeftViewContainer(velocity: CGFloat = 0) {
prepareLeftContainerToOpen() prepareContainerToOpen(&leftViewController, viewContainer: &leftViewContainer, state: leftContainer.state)
UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, Double(leftViewContainer.frame.origin.x / velocity)))), UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, Double(leftViewContainer.frame.origin.x / velocity)))),
delay: 0, delay: 0,
options: .CurveEaseInOut, options: .CurveEaseInOut,
...@@ -326,12 +326,12 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -326,12 +326,12 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
:name: openRightViewContainer :name: openRightViewContainer
*/ */
public func openRightViewContainer(velocity: CGFloat = 0) { public func openRightViewContainer(velocity: CGFloat = 0) {
prepareRightContainerToOpen() prepareContainerToOpen(&rightViewController, viewContainer: &rightViewContainer, state: rightContainer.state)
UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, Double(fabs(rightViewContainer.frame.origin.x - rightOrigin) / velocity)))), UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, Double(fabs(rightViewContainer.frame.origin.x - rightOriginX) / velocity)))),
delay: 0, delay: 0,
options: .CurveEaseInOut, options: .CurveEaseInOut,
animations: { _ in animations: { _ in
self.rightViewContainer.frame.origin.x = self.rightOrigin - self.rightViewContainer.frame.size.width self.rightViewContainer.frame.origin.x = self.rightOriginX - self.rightViewContainer.frame.size.width
self.backdropViewContainer.layer.opacity = Float(options.contentViewOpacity) self.backdropViewContainer.layer.opacity = Float(options.contentViewOpacity)
self.mainViewContainer.transform = CGAffineTransformMakeScale(options.contentViewScale, options.contentViewScale) self.mainViewContainer.transform = CGAffineTransformMakeScale(options.contentViewScale, options.contentViewScale)
} }
...@@ -347,12 +347,12 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -347,12 +347,12 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
:name: closeLeftViewContainer :name: closeLeftViewContainer
*/ */
public func closeLeftViewContainer(velocity: CGFloat = 0) { public func closeLeftViewContainer(velocity: CGFloat = 0) {
prepareLeftContainerToClose() prepareContainerToClose(&leftViewController, state: leftContainer.state)
UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, fabs(leftViewContainer.frame.origin.x - leftOrigin) / velocity))), UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, fabs(leftViewContainer.frame.origin.x - leftOriginX) / velocity))),
delay: 0, delay: 0,
options: .CurveEaseInOut, options: .CurveEaseInOut,
animations: { _ in animations: { _ in
self.leftViewContainer.frame.origin.x = self.leftOrigin self.leftViewContainer.frame.origin.x = self.leftOriginX
self.backdropViewContainer.layer.opacity = 0 self.backdropViewContainer.layer.opacity = 0
self.mainViewContainer.transform = CGAffineTransformMakeScale(1, 1) self.mainViewContainer.transform = CGAffineTransformMakeScale(1, 1)
} }
...@@ -369,12 +369,12 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -369,12 +369,12 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
:name: closeRightViewContainer :name: closeRightViewContainer
*/ */
public func closeRightViewContainer(velocity: CGFloat = 0) { public func closeRightViewContainer(velocity: CGFloat = 0) {
prepareRightContainerToClose() prepareContainerToClose(&rightViewController, state: rightContainer.state)
UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, fabs(rightViewContainer.frame.origin.x - rightOrigin) / velocity))), UIView.animateWithDuration(Double(0 == velocity ? options.animationDuration : fmax(0.1, fmin(1, fabs(rightViewContainer.frame.origin.x - rightOriginX) / velocity))),
delay: 0, delay: 0,
options: .CurveEaseInOut, options: .CurveEaseInOut,
animations: { _ in animations: { _ in
self.rightViewContainer.frame.origin.x = self.rightOrigin self.rightViewContainer.frame.origin.x = self.rightOriginX
self.backdropViewContainer.layer.opacity = 0 self.backdropViewContainer.layer.opacity = 0
self.mainViewContainer.transform = CGAffineTransformMakeScale(1, 1) self.mainViewContainer.transform = CGAffineTransformMakeScale(1, 1)
} }
...@@ -429,16 +429,16 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -429,16 +429,16 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
// //
public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { public func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if gestureRecognizer == leftPanGesture { if gestureRecognizer == leftPanGesture {
return gesturePanLeftViewController(gestureRecognizer, point: touch.locationInView(view)) return gesturePanLeftViewController(gestureRecognizer, withTouchPoint: touch.locationInView(view))
} }
if gestureRecognizer == rightPanGesture { if gestureRecognizer == rightPanGesture {
return gesturePanRightViewController(gestureRecognizer, withTouchPoint: touch.locationInView(view)) return gesturePanRightViewController(gestureRecognizer, withTouchPoint: touch.locationInView(view))
} }
if gestureRecognizer == leftTapGetsture { if gestureRecognizer == leftTapGesture {
return isLeftContainerOpened && !isPointContainedWithinLeftRectViewController(touch.locationInView(view)) return isLeftContainerOpened && !isPointContainedWithinViewController(&leftViewContainer, point: touch.locationInView(view))
} }
if gestureRecognizer == rightTapGesture { if gestureRecognizer == rightTapGesture {
return isRightContainerOpened && !isPointContainedWithinRightViewController(touch.locationInView(view)) return isRightContainerOpened && !isPointContainedWithinViewController(&rightViewContainer, point: touch.locationInView(view))
} }
return true return true
} }
...@@ -450,70 +450,40 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -450,70 +450,40 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
prepareMainContainer() prepareMainContainer()
prepareBackdropContainer() prepareBackdropContainer()
prepareLeftContainer() prepareContainer(&leftContainer, viewContainer: &leftViewContainer, originX: leftOriginX, width: options.leftViewContainerWidth)
prepareLeftGestures() prepareLeftGestures()
prepareRightContainer() prepareContainer(&rightContainer, viewContainer: &rightViewContainer, originX: rightOriginX, width: options.rightViewContainerWidth)
prepareRightGestures() prepareRightGestures()
} }
// //
// :name: addLeftGestures // :name: addGestures
// //
private func addLeftGestures() { private func addGestures(inout pan: UIPanGestureRecognizer?, panSelector: Selector, inout tap: UITapGestureRecognizer?, tapSelector: Selector) {
if nil == leftPanGesture { if nil == pan {
leftPanGesture = UIPanGestureRecognizer(target: self, action: "handleLeftPanGesture:") pan = UIPanGestureRecognizer(target: self, action: panSelector)
leftPanGesture!.delegate = self pan!.delegate = self
view.addGestureRecognizer(leftPanGesture!) view.addGestureRecognizer(pan!)
} }
if nil == leftTapGetsture { if nil == tap {
leftTapGetsture = UITapGestureRecognizer(target: self, action: "handleLeftTapGesture:") tap = UITapGestureRecognizer(target: self, action: tapSelector)
leftTapGetsture!.delegate = self tap!.delegate = self
view.addGestureRecognizer(leftTapGetsture!) view.addGestureRecognizer(tap!)
} }
} }
// //
// :name: addRightGestures // :name: removeGestures
// //
private func addRightGestures() { private func removeGestures(inout pan: UIPanGestureRecognizer?, inout tap: UITapGestureRecognizer?) {
if nil == rightPanGesture { if let g = pan {
rightPanGesture = UIPanGestureRecognizer(target: self, action: "handleRightPanGesture:") view.removeGestureRecognizer(g)
rightPanGesture!.delegate = self pan = nil
view.addGestureRecognizer(rightPanGesture!)
}
if nil == rightTapGesture {
rightTapGesture = UITapGestureRecognizer(target: self, action: "handleRightTapGesture:")
rightTapGesture!.delegate = self
view.addGestureRecognizer(rightTapGesture!)
}
}
//
// :name: removeLeftGestures
//
private func removeLeftGestures() {
if let l = leftPanGesture {
view.removeGestureRecognizer(l)
leftPanGesture = nil
} }
if let l = leftTapGetsture { if let g = tap {
view.removeGestureRecognizer(l) view.removeGestureRecognizer(g)
leftTapGetsture = nil tap = nil
}
}
//
// :name: removeRightGestures
//
private func removeRightGestures() {
if let r = rightPanGesture {
view.removeGestureRecognizer(r)
rightPanGesture = nil
}
if let r = rightTapGesture {
view.removeGestureRecognizer(r)
rightTapGesture = nil
} }
} }
...@@ -529,13 +499,13 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -529,13 +499,13 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
delegate?.sideNavDidBeginLeftPan?(self, container: leftContainer) delegate?.sideNavDidBeginLeftPan?(self, container: leftContainer)
leftViewController?.beginAppearanceTransition(!isLeftContainerOpened, animated: true) leftViewController?.beginAppearanceTransition(!isLeftContainerOpened, animated: true)
addShadow(leftViewContainer) addShadow(leftViewContainer)
openWindow() toggleWindow(shouldOpen: true)
} else if .Changed == gesture.state { } else if .Changed == gesture.state {
let v: CGPoint = gesture.translationInView(gesture.view!) let v: CGPoint = gesture.translationInView(gesture.view!)
let r = (leftViewContainer.frame.origin.x - leftOrigin) / leftViewContainer.frame.size.width let r = (leftViewContainer.frame.origin.x - leftOriginX) / leftViewContainer.frame.size.width
let s: CGFloat = 1 - (1 - options.contentViewScale) * r let s: CGFloat = 1 - (1 - options.contentViewScale) * r
let x: CGFloat = leftContainer.frame.origin.x + v.x let x: CGFloat = leftContainer.frame.origin.x + v.x
leftViewContainer.frame.origin.x = x < leftOrigin ? leftOrigin : x > 0 ? 0 : x leftViewContainer.frame.origin.x = x < leftOriginX ? leftOriginX : x > 0 ? 0 : x
backdropViewContainer.layer.opacity = Float(r * options.contentViewOpacity) backdropViewContainer.layer.opacity = Float(r * options.contentViewOpacity)
mainViewContainer.transform = CGAffineTransformMakeScale(s, s) mainViewContainer.transform = CGAffineTransformMakeScale(s, s)
if nil != delegate?.sideNavDidChangeLeftPan { if nil != delegate?.sideNavDidChangeLeftPan {
...@@ -544,7 +514,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -544,7 +514,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
} else { } else {
let v: CGPoint = gesture.velocityInView(gesture.view) let v: CGPoint = gesture.velocityInView(gesture.view)
let x: CGFloat = v.x >= 1000 || v.x <= -1000 ? v.x : 0 let x: CGFloat = v.x >= 1000 || v.x <= -1000 ? v.x : 0
let s: SideNavState = leftViewContainer.frame.origin.x <= CGFloat(floor(leftOrigin)) + options.pointOfNoReturnWidth || v.x <= -1000 ? .Closed : .Opened let s: SideNavState = leftViewContainer.frame.origin.x <= CGFloat(floor(leftOriginX)) + options.pointOfNoReturnWidth || v.x <= -1000 ? .Closed : .Opened
if .Closed == s { if .Closed == s {
closeLeftViewContainer(velocity: x) closeLeftViewContainer(velocity: x)
} else { } else {
...@@ -576,15 +546,15 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -576,15 +546,15 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
delegate?.sideNavDidBeginRightPan?(self, container: rightContainer) delegate?.sideNavDidBeginRightPan?(self, container: rightContainer)
rightViewController?.beginAppearanceTransition(!isRightContainerOpened, animated: true) rightViewController?.beginAppearanceTransition(!isRightContainerOpened, animated: true)
addShadow(rightViewContainer) addShadow(rightViewContainer)
openWindow() toggleWindow(shouldOpen: true)
} else if .Changed == gesture.state { } else if .Changed == gesture.state {
let v: CGPoint = gesture.translationInView(gesture.view!) let v: CGPoint = gesture.translationInView(gesture.view!)
let r = (rightOrigin - rightViewContainer.frame.origin.x) / rightViewContainer.frame.size.width let r = (rightOriginX - rightViewContainer.frame.origin.x) / rightViewContainer.frame.size.width
let s: CGFloat = 1 - (1 - options.contentViewScale) * r let s: CGFloat = 1 - (1 - options.contentViewScale) * r
let m: CGFloat = rightOrigin - rightViewContainer.frame.size.width let m: CGFloat = rightOriginX - rightViewContainer.frame.size.width
let x: CGFloat = rightContainer.frame.origin.x + gesture.translationInView(gesture.view!).x let x: CGFloat = rightContainer.frame.origin.x + gesture.translationInView(gesture.view!).x
rightViewContainer.frame.origin.x = x > rightOrigin ? rightOrigin : x < m ? m : x rightViewContainer.frame.origin.x = x > rightOriginX ? rightOriginX : x < m ? m : x
backdropViewContainer.layer.opacity = Float(r * options.contentViewOpacity) backdropViewContainer.layer.opacity = Float(r * options.contentViewOpacity)
mainViewContainer.transform = CGAffineTransformMakeScale(s, s) mainViewContainer.transform = CGAffineTransformMakeScale(s, s)
if nil != delegate?.sideNavDidChangeRightPan { if nil != delegate?.sideNavDidChangeRightPan {
...@@ -593,7 +563,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -593,7 +563,7 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
} else { } else {
let v: CGPoint = gesture.velocityInView(gesture.view) let v: CGPoint = gesture.velocityInView(gesture.view)
let x: CGFloat = v.x <= -1000 || v.x >= 1000 ? v.x : 0 let x: CGFloat = v.x <= -1000 || v.x >= 1000 ? v.x : 0
let s: SideNavState = rightViewContainer.frame.origin.x >= CGFloat(floor(rightOrigin) - options.pointOfNoReturnWidth) || v.x >= 1000 ? .Closed : .Opened let s: SideNavState = rightViewContainer.frame.origin.x >= CGFloat(floor(rightOriginX) - options.pointOfNoReturnWidth) || v.x >= 1000 ? .Closed : .Opened
if .Closed == s { if .Closed == s {
closeRightViewContainer(velocity: x) closeRightViewContainer(velocity: x)
} else { } else {
...@@ -633,33 +603,16 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -633,33 +603,16 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
} }
// //
// :name: openWindow // :name: toggleWindow
//
private func openWindow() {
if options.shouldHideStatusBar {
if isViewBasedAppearance {
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .Slide)
} else {
dispatch_async(dispatch_get_main_queue(), {
if let w = UIApplication.sharedApplication().keyWindow {
w.windowLevel = UIWindowLevelStatusBar + 1
}
})
}
}
}
//
// :name: closeWindow
// //
private func closeWindow() { private func toggleWindow(shouldOpen: Bool = false) {
if options.shouldHideStatusBar { if options.shouldHideStatusBar {
if isViewBasedAppearance { if isViewBasedAppearance {
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: .Slide) UIApplication.sharedApplication().setStatusBarHidden(shouldOpen, withAnimation: .Slide)
} else { } else {
dispatch_async(dispatch_get_main_queue(), { dispatch_async(dispatch_get_main_queue(), {
if let w = UIApplication.sharedApplication().keyWindow { if let w = UIApplication.sharedApplication().keyWindow {
w.windowLevel = UIWindowLevelNormal w.windowLevel = UIWindowLevelStatusBar + (shouldOpen ? 1 : 0)
} }
}) })
} }
...@@ -680,14 +633,14 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -680,14 +633,14 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
// //
// :name: gesturePanLeftViewController // :name: gesturePanLeftViewController
// //
private func gesturePanLeftViewController(gesture: UIGestureRecognizer, point: CGPoint) -> Bool { private func gesturePanLeftViewController(gesture: UIGestureRecognizer, withTouchPoint point: CGPoint) -> Bool {
return isLeftContainerOpened || options.leftPanFromBezel && isLeftPointContainedWithinRect(point) return isLeftContainerOpened || options.leftPanFromBezel && isLeftPointContainedWithinRect(point)
} }
// //
// :name: isLeftPointContainedWithinRect // :name: isLeftPointContainedWithinRect
// //
private func isLeftPointContainedWithinRect(point: CGPoint) -> Bool{ private func isLeftPointContainedWithinRect(point: CGPoint) -> Bool {
var r: CGRect = CGRectZero var r: CGRect = CGRectZero
var t: CGRect = CGRectZero var t: CGRect = CGRectZero
let w: CGFloat = options.leftBezelWidth let w: CGFloat = options.leftBezelWidth
...@@ -708,26 +661,19 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -708,26 +661,19 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
private func isRightPointContainedWithinRect(point: CGPoint) -> Bool { private func isRightPointContainedWithinRect(point: CGPoint) -> Bool {
var r: CGRect = CGRectZero var r: CGRect = CGRectZero
var t: CGRect = CGRectZero var t: CGRect = CGRectZero
let w: CGFloat = rightOrigin - options.rightBezelWidth let w: CGFloat = rightOriginX - options.rightBezelWidth
CGRectDivide(view.bounds, &t, &r, w, .MinXEdge) CGRectDivide(view.bounds, &t, &r, w, .MinXEdge)
return CGRectContainsPoint(r, point) return CGRectContainsPoint(r, point)
} }
// //
// :name: isPointContainedWithinLeftRectViewController // :name: isPointContainedWithinViewController
// //
private func isPointContainedWithinLeftRectViewController(point: CGPoint) -> Bool { private func isPointContainedWithinViewController(inout viewContainer: UIView!, point: CGPoint) -> Bool {
return CGRectContainsPoint(leftViewContainer.frame, point) return CGRectContainsPoint(viewContainer.frame, point)
} }
// //
// :name: isPointContainedWithinRightViewController
//
private func isPointContainedWithinRightViewController(point: CGPoint) -> Bool {
return CGRectContainsPoint(rightViewContainer.frame, point)
}
//
// :name: prepareMainContainer // :name: prepareMainContainer
// //
private func prepareMainContainer() { private func prepareMainContainer() {
...@@ -749,81 +695,54 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg ...@@ -749,81 +695,54 @@ public class SideNavController: MaterialViewController, UIGestureRecognizerDeleg
} }
// //
// :name: prepareLeftContainer
//
private func prepareLeftContainer() {
leftContainer = SideNavContainer(state: .Closed, point: CGPointZero, frame: CGRectZero)
var b: CGRect = view.bounds
b.size.width = options.leftViewContainerWidth
b.origin.x = leftOrigin
leftViewContainer = UIView(frame: b)
leftViewContainer.backgroundColor = .clearColor()
leftViewContainer.autoresizingMask = .FlexibleHeight
view.addSubview(leftViewContainer)
}
//
// :name: prepareLeftContainerToOpen
//
private func prepareLeftContainerToOpen() {
leftViewController?.beginAppearanceTransition(!isLeftContainerOpened, animated: true)
addShadow(leftViewContainer)
openWindow()
}
//
// :name: prepareLeftContainerToClose
//
private func prepareLeftContainerToClose() {
leftViewController?.beginAppearanceTransition(isLeftContainerOpened, animated: true)
closeWindow()
}
//
// :name: prepareLeftGestures // :name: prepareLeftGestures
// //
private func prepareLeftGestures() { private func prepareLeftGestures() {
removeLeftGestures() removeGestures(&leftPanGesture, tap: &leftTapGesture)
addLeftGestures() addGestures(&leftPanGesture, panSelector: "handleLeftPanGesture:", tap: &leftTapGesture, tapSelector: "handleLeftTapGesture:")
} }
// //
// :name: prepareRightContainer // :name: prepareContainer
// //
private func prepareRightContainer() { private func prepareContainer(inout container: SideNavContainer!, inout viewContainer: UIView!, originX: CGFloat, width: CGFloat) {
rightContainer = SideNavContainer(state: .Closed, point: CGPointZero, frame: CGRectZero) container = SideNavContainer(state: .Closed, point: CGPointZero, frame: CGRectZero)
var b: CGRect = view.bounds var b: CGRect = view.bounds
b.size.width = options.rightViewContainerWidth b.size.width = width
b.origin.x = rightOrigin b.origin.x = originX
rightViewContainer = UIView(frame: b) viewContainer = UIView(frame: b)
rightViewContainer.backgroundColor = .clearColor() viewContainer.backgroundColor = .clearColor()
rightViewContainer.autoresizingMask = .FlexibleHeight viewContainer.autoresizingMask = .FlexibleHeight
view.addSubview(rightViewContainer) view.addSubview(viewContainer)
} }
// //
// :name: prepareRightContainerToOpen // :name: prepareRightGestures
// //
private func prepareRightContainerToOpen() { private func prepareRightGestures() {
rightViewController?.beginAppearanceTransition(!isRightContainerOpened, animated: true) removeGestures(&rightPanGesture, tap: &rightTapGesture)
addShadow(rightViewContainer) addGestures(&rightPanGesture, panSelector: "handleRightPanGesture:", tap: &rightTapGesture, tapSelector: "handleRightTapGesture:")
openWindow()
} }
// //
// :name: prepareRightContainerToClose // :name: prepareContainerToOpen
// //
private func prepareRightContainerToClose() { private func prepareContainerToOpen(inout viewController: UIViewController?, inout viewContainer: UIView!, state: SideNavState) {
rightViewController?.beginAppearanceTransition(isRightContainerOpened, animated: true) if let vc = viewController {
closeWindow() vc.beginAppearanceTransition(.Opened == state, animated: true)
addShadow(viewContainer)
toggleWindow(shouldOpen: true)
}
} }
// //
// :name: prepareRightGestures // :name: prepareContainerToClose
// //
private func prepareRightGestures() { private func prepareContainerToClose(inout viewController: UIViewController?, state: SideNavState) {
removeRightGestures() if let vc = viewController {
addRightGestures() vc.beginAppearanceTransition(.Opened == state, animated: true)
toggleWindow()
}
} }
// //
......
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