一个优雅的UITabBarController子类
汉堡菜单具有弹簧动画和转换于开启和关闭状态的菜单按钮。
将Pod添加到您的Podfile中
pod "HamburgerMenu"
将您的主UITabBarController
的类更改为模块HamburgerMenu
中的MenuController
。
这会使您的UITabBarController
立即转换为使用默认菜单nib的汉堡菜单。
通过向MenuController
提供MenuView
的子类,可以轻松地自定义汉堡菜单。
右击主Storyboard并选择新建文件...
。选择用户界面
并创建一个新的视图
。
将视图命名为MyCustomNib
(或您想要的任何名称)。
右击新创建的.xib
文件并选择新建文件...
。选择源
并创建一个新的Cocoa Touch类
。
将类命名为MyCustomNib
(或您为nib起的名称)并使其成为MenuView
的子类。
打开MyCustomNib.xib
并将UIView
的类设置为MyCustomNib
。
打开MyCustomNib.swift
并导入HamburgerMenu
。
import HamburgerMenu
打开主Storyboard并将MenuController
的Menu Nib
设置为MyCustomNib
(或您为其命名的任何名称)。通过选择MenuController
,进入属性面板,并将nib的(不带.xib
)名称输入到属性框中完成此操作。
现在您可以自由地将任何 UI 元素添加到 MyCustomNib.xib
中。您在这里添加的内容将显示在 Hamburger 菜单中。
如果您想让 Hamburger 菜单在所有方向和所有设备上正确呈现,请确保使用 Auto Layout。
在您的 MenuView
子类内部调用 self.switchTab(_: Int, andClose: Bool)
以更改当前选中的标签页。
@IBAction func buttonForTabTwoTouchUpInside(sender: UIButton) {
self.switchToTab(1, andClose: true) //index 1 = tab #2
}
您也可以像默认菜单视图那样遍历 self.controller.tabBar.items
或 self.controller.viewControllers
以动态创建所有子视图控制器的按钮。
查看 Pod 中的 DefaultMenuView.swift
,看看如何使用 UIStackView
来实现此功能。
苹果建议不要在您的 UI 中使用汉堡菜单,因为这可能会使您的应用更难使用。请参阅 设计直观的用户体验 - 2014 年 WWDC 211 会话(第 31 分 57 秒)
了解更多信息。
此存储库针对的是汉堡菜单是更好的解决方案或设计文件要求使用汉堡菜单的特殊情况(后者是创建此存储库的原因)。
Tanner Nelson
HamburgerMenu 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。