如何在 swift 4 中消失没有按钮的侧边菜单

How to disappear sidemenu without button in swift 4

我有一些问题。我用 swift4 制作了侧边菜单。

当我单击按钮时,侧边菜单出现并消失。

但我想让没有按钮的侧边菜单消失。

例如,当我单击另一个视图(不是侧边菜单)时,侧边菜单消失。

我的代码是这样的。

class ContainerVC: UIViewController {

@IBOutlet weak var constaint: NSLayoutConstraint!
var sideMenuOpen = false

override func viewDidLoad() {
    super.viewDidLoad()

    NotificationCenter.default.addObserver(self,  selector: #selector(toggleSideMenu), name: NSNotification.Name("ToggleSideMenu"), object: nil)
}

@objc func toggleSideMenu(){

    if sideMenuOpen {

        sideMenuOpen = false
        constaint.constant = -130

    }else {
        sideMenuOpen = true
        constaint.constant = 0

    }
    UIView.animate(withDuration: 0.3){
        self.view.layoutIfNeeded()
    }
}

当我单击白色背景(视图)时,侧面菜单消失。 谢谢

您可以使用类似的代码,请在 viewDidLoad() 中添加以下代码

let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss(fromGesture:)))
    self.view.addGestureRecognizer(tap)

然后创建一个 dismiss 函数

@objc func OpenSideMenu(){
    sideMenuOpen = true
    constaint.constant = 0
    UIView.animate(withDuration: 0.3){
        self.view.layoutIfNeeded()
    }
}

@objc func closeSideMenu(){
    sideMenuOpen = false
    constaint.constant = -130
    UIView.animate(withDuration: 0.3){
        self.view.layoutIfNeeded()
    }
}

@objc func dismiss(fromGesture gesture: UISwipeGestureRecognizer) {
    closeSideMenu()
}

希望这会奏效。