Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift 4中取消没有按钮的侧菜单_Ios_Swift_Swift4_Side Menu - Fatal编程技术网

Ios 如何在swift 4中取消没有按钮的侧菜单

Ios 如何在swift 4中取消没有按钮的侧菜单,ios,swift,swift4,side-menu,Ios,Swift,Swift4,Side Menu,我有一些问题。我用swift4做了配菜 当我点击按钮时,侧菜单出现并消失 但我想让没有按钮的菜单消失 例如,当我单击另一个视图(不是侧菜单)时,单击“消失侧菜单” 我的代码是这样的 class ContainerVC: UIViewController { @IBOutlet weak var constaint: NSLayoutConstraint! var sideMenuOpen = false override func viewDidLoad() { super.view

我有一些问题。我用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()中添加以下代码

然后创建一个函数用于dismise

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

希望这能奏效。

使用委托方法。您可以使用轻触手势使用滑动手势。1。使用滑动手势2。当侧菜单打开时,添加一个点击手势以关闭。是的,问题是什么?谢谢你的建议。但我有一些问题。当我点击白色页面时,消失侧菜单。但是,当再点击一个按钮时,就会出现在菜单的旁边。那你想要什么呢?请再解释一下,我只想要一份菜单。不显示侧菜单。我的意思是当我点击白色背景,消失侧菜单,我只想出现侧菜单关于按钮非常简单,只是创建一个单独的两个功能隐藏和打开侧菜单。调用第一个打开函数以显示菜单,并在点击白色背景时调用隐藏函数。简单的
@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()
}