@@ -101,12 +101,36 @@ public class SOContainerViewController: UIViewController, UIGestureRecognizerDel
101101
102102 let animations = { ( ) -> ( ) in
103103 leftVC. view. frame = frame
104+ self . contentCoverView. alpha = newValue ? 1.0 : 0.0
104105 }
105106
106107 UIView . animateWithDuration ( SideViewControllerOpenAnimationDuration, delay: 0 , options: UIViewAnimationOptions . BeginFromCurrentState, animations: animations, completion: nil )
107108 }
108109 }
109110
111+ public override init ( nibName nibNameOrNil: String ? , bundle nibBundleOrNil: NSBundle ? ) {
112+ self . contentCoverView = UIView ( )
113+ super. init ( nibName: nibNameOrNil, bundle: nibBundleOrNil)
114+ }
115+
116+ public required init ? ( coder aDecoder: NSCoder ) {
117+ self . contentCoverView = UIView ( )
118+ super. init ( coder: aDecoder)
119+ }
120+
121+ public override func viewDidLoad( ) {
122+ super. viewDidLoad ( )
123+
124+ self . contentCoverView. frame = self . view. bounds
125+ self . contentCoverView. backgroundColor = UIColor ( red: 0.0 , green: 0.0 , blue: 0.0 , alpha: 0.5 )
126+ self . contentCoverView. alpha = 0.0
127+
128+ let tapOnContentCoverViewGesture = UITapGestureRecognizer ( target: self , action: " contentCoverViewClicked " )
129+ self . contentCoverView. addGestureRecognizer ( tapOnContentCoverViewGesture)
130+
131+ self . view. addSubview ( self . contentCoverView)
132+ }
133+
110134 //
111135 // MARK: Gesture recognizer delegate
112136
@@ -126,6 +150,11 @@ public class SOContainerViewController: UIViewController, UIGestureRecognizerDel
126150 var _topViewController : UIViewController ?
127151 var _leftViewController : UIViewController ?
128152
153+ var contentCoverView : UIView
154+
155+ func contentCoverViewClicked( ) {
156+ self . isLeftViewControllerPresented = false
157+ }
129158
130159 func moveMenu( panGesture: UIPanGestureRecognizer ) {
131160 panGesture. view? . layer. removeAllAnimations ( )
@@ -138,15 +167,20 @@ public class SOContainerViewController: UIViewController, UIGestureRecognizerDel
138167 }
139168
140169 panGesture. setTranslation ( CGPointMake ( 0 , 0 ) , inView: self . view)
141- }
142- else if panGesture. state == UIGestureRecognizerState . Ended {
170+
171+ if let view = self . leftViewController? . view {
172+ self . contentCoverView. alpha = 1.0 - abs( view. frame. origin. x) / view. frame. size. width
173+ }
174+ } else if panGesture. state == UIGestureRecognizerState . Ended {
143175 if let sidebar = self . leftViewController {
144176 self . isLeftViewControllerPresented = self . viewPulledOutMoreThanHalfOfItsWidth ( sidebar)
145177 }
146178 }
147179 }
148180
149181 func brindLeftViewToFront( ) {
182+ self . view. bringSubviewToFront ( self . contentCoverView)
183+
150184 if let vc = self . leftViewController {
151185 self . view. bringSubviewToFront ( vc. view)
152186 }
0 commit comments