-1

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

在此处输入图像描述

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

4

1 回答 1

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

希望这会奏效。

于 2018-04-17T06:21:22.590 回答