如何在swift 4中没有按钮消失sidemenu

时间:2018-04-17 06:03:19

标签: ios swift swift4 side-menu

我有一些问题。我在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()
    }
}

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

中添加以下代码
let tap = UITapGestureRecognizer(target: self, action: #selector(dismiss(fromGesture:)))
    self.view.addGestureRecognizer(tap)

然后创建一个解雇函数

@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()
}

希望这会奏效。