SWRevealViewController close rear view when tapping front view

前端 未结 9 1616
夕颜
夕颜 2020-12-09 04:18

I am using SWRevealViewController in order to implement a side nav menu in my app. I would like to make it so that the front view cannot be interacted with when

9条回答
  •  甜味超标
    2020-12-09 05:01

    Consider this simple solution, works perfect

    private let DimmingViewTag = 10001
    
    extension UIViewController: SWRevealViewControllerDelegate {    
    
        func setupMenuGestureRecognizer() {
    
            revealViewController().delegate = self
    
            view.addGestureRecognizer(revealViewController().panGestureRecognizer())
            view.addGestureRecognizer(revealViewController().tapGestureRecognizer())
        }
    
        //MARK: - SWRevealViewControllerDelegate
    
        public func revealController(revealController: SWRevealViewController!, didMoveToPosition position: FrontViewPosition) {
    
            if case .Right = position {
    
                let dimmingView = UIView(frame: view.frame)
                dimmingView.tag = DimmingViewTag
    
                view.addSubview(dimmingView)
                view.bringSubviewToFront(dimmingView)
    
            } else {
                view.viewWithTag(DimmingViewTag)?.removeFromSuperview()
            }
        }
    }
    

    Simple usage in UIViewController:

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
    
        setupMenuGestureRecognizer()
    }
    

提交回复
热议问题