2

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

到目前为止,我在 的UIButton右上角有一个viewController,我想要的是当我点击那个按钮时,我show/hide slide menu想说 3 个项目......</p>

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

4

2 回答 2

8

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

在您的buttonClicked 事件中 -

  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)
于 2017-09-18T09:08:58.143 回答
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

于 2017-09-18T07:02:48.927 回答