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

Posted

技术标签:

【中文标题】如何在swift 4中消失没有按钮的侧边菜单【英文标题】:How to disappear sidemenu without button in swift 4 【发布时间】:2018-04-17 06:03:19 【问题描述】:

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

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

【问题讨论】:

使用委托方法。 您可以使用点击手势 使用滑动手势。 1.使用滑动手势 2. 当侧边菜单打开时添加点击手势关闭。 【参考方案1】:

您可以使用类似的代码,请在 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()

希望这会奏效。

【讨论】:

是的,有什么问题? 感谢您的建议。但我有一些问题。当我单击白页时,侧面菜单消失。但是,当再点击一个按钮时,会出现侧边菜单.. 那你想要什么?请多解释 我只想消失侧边菜单。不会出现侧边菜单。我的意思是当我点击白色背景时,侧面菜单消失,我只想出现关于按钮的侧面菜单 很简单,只需要单独创建两个函数来隐藏和打开侧边菜单。调用第一个打开功能以显示菜单并在点击白色背景时调用隐藏功能。简单

以上是关于如何在swift 4中消失没有按钮的侧边菜单的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何使用侧边菜单、SwiftUI 切换视图

如何从弹出按钮点击Ionic关闭侧边菜单?

如何在侧边菜单的底部快速添加一个按钮?

如何以编程方式在 ios 的滑出式侧边栏菜单中添加按钮

iOS 如何在 AppDelegate 中以编程方式设置侧边栏菜单?

swrevealviewcontroller 在侧边菜单打开/关闭时更改切换按钮图像?