如何在 Swift 3.0 中创建右侧侧边菜单?

问题描述 投票:0回答:3

我是初学者,我想在右侧创建一个侧边菜单。

到目前为止,我在

UIButton
的右上角有一个
viewController
,我想要的是当我单击该按钮时,我想要
show/hide slide menu
说 3 个项目…

当我单击每个项目时,它将转到不同的视图控制器。在我的项目中,我使用 AMSlideMenu 仅在一个 viewController 中显示幻灯片菜单。预先感谢。

swift3 amslidemenu
3个回答
9
投票

Anuj 只需按照步骤操作即可 -

  1. 创建一个
    SideMenuViewController
    ,它是
    UIViewController
    的子类,使用故事板根据要求看起来如何。
  2. 通过
    SideMenuViewController
    单击将此
    UIButton
    及其视图添加为父视图控制器中的子视图控制器。
  3. 完成后,从父视图控制器中删除
    SideMenuViewController
    并从父视图中删除其视图。

对所有视图控制器重复 2 和 3。

更新代码

在视图控制器中声明 -

var sideMenuViewController = SideMenuViewController()
var isMenuOpened:Bool = false

viewDidLoad

    sideMenuViewController = storyboard!.instantiateViewController(withIdentifier: "SideMenuViewController") as! SideMenuViewController
    sideMenuViewController.view.frame = UIScreen.main.bounds

在您的

button
点击事件中 -

  func openAndCloseMenu(){

    if(isMenuOpened){

        isMenuOpened = false
        sideMenuViewController.willMove(toParentViewController: nil)
        sideMenuViewController.view.removeFromSuperview()
        sideMenuViewController.removeFromParentViewController()

    }
    else{

        isMenuOpened = true
        self.addChildViewController(sideMenuViewController)
        self.view.addSubview(sideMenuViewController.view)
        sideMenuViewController.didMove(toParentViewController: self)
     }

}

对于动画

let transition = CATransition()

let withDuration = 0.5

transition.duration = withDuration
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromLeft

sideMenuViewController.view.layer.add(transition, forKey: kCATransition)

0
投票

iOS 中没有内置的侧边菜单控件。但是,您可以使用不同的开源库来实现您的目标。

看看以下库:

https://github.com/John-Lluch/SWRevealViewController

该库的详细教程:

  1. http://www.appcoda.com/ios-programming-sidebar-navigation-menu/

  2. http://www.raywenderlich.com/32054/how-to-create-a-slide-out-navigation-like-facebook-and-path


0
投票

示例:

extension SideMenuVC: UITableViewDelegate, UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "SideMenuTVCell", for: indexPath) as! SideMenuTVCell
        return cell
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.