如何在iPhone中创建物理菜单按钮(例如Android中的一个)菜单?
-
25-10-2019 - |
题
我正在iPhone开发基于导航的应用程序。
在其中我想创建物理菜单按钮,例如菜单,例如Android手机中的菜单。
可以从层次结构中的任何视图访问菜单。
任何人都知道我们该如何实现这一目标。
我们可以在uinavigationbar中添加一个类似抽屉菜单吗?
请不要建议TABBARCONTROLLER,因为这是最后一个选项。
解决方案
您应该做的是创建一个子类 UIViewController
, ,例如 MasterViewController
. 。拥有所有视图控制器子类 MasterViewController
. 。在里面 MasterViewController
您可以编写代码来创建和显示抽屉视图,然后所有视图控制器都将继承该代码,并可以在任何时候自行调用。
滑动视图:
drawerView.frame = CGRectMake(0, -1*drawerView.frame.size.height, self.view.frame.size.width, whateverHeight);
[UIView beginAnimations:nil context:NULL];
drawerView.frame = CGRectMake(0, 0, self.view.frame.size.width, whateverHeight);
[UIView commitAnimations];
其他提示
我认为您想要的只是将UInavigationItem的标题视图设置为任意UIVIEW来处理用户水龙头。
这不必是文本标签:)
如果是这样,我建议您服用 sharedInstance
标志跟踪视图控制器堆栈的层次结构。每次用户导航时只需更新您的 sharedInstance
并进行自定义菜单准备并填充它。良好的做法是重复使用您的UI组件,而不是在每个导航操作中使其新颖。
您可以创建一个”DrawerView
“上课并将其导入您要使用的位置。然后您可以使用 presentModalViewController: myDrawer
在需要时使它出现。希望这是有道理的。
它非常简单..
在一个Xib中,您可以正确添加许多视图。现在,添加两个主要视图,例如Say Data View和您想要的DOWN侧按钮视图。(如果使用4个按钮进行导航)现在将您的视图保持在顶部。您可以在该数据视图中添加的所有其他视图。
如果您可以获得iOS 5 beta,我强烈建议您使用它。新的Beta Dev版本具有扩展 UIViewController
, ,被Apple称为容器视图控制器。它们非常容易设置,我在应用程序中使用一个。
容器视图控制器就像 UINavigationControllers
和 UITabBarControllers
因为它们允许您添加儿童视图 控制器, ,不仅仅是孩子的观点。就像我说的那样,它们很容易设置。我将解释如何:
创建一个名为
ContainerController
. 。添加一个名为的初始化方法- (id)initWithNavigationController:(UINavigationController *)controller
. 。它的实现应该看起来像这样:if ((self = [super init])) { [self addChildViewController:controller]; controller.view.frame = CGRectMake(0, 0, 320, 420); // Leave room for the menu at bottom of the screen [self.view addSubview:controller.view]; }
我们添加导航控制器的原因是因为它可以防止该容器控制器进行过渡,这更复杂。
在里面
ContainerController
'viewDidLoad
方法,创建菜单:[super viewDidLoad]; UIView *menuWrapperView = [[[UIView alloc] init] autorelease]; menuWrapperView.frame = CGRectMake(0, 420, 320, 40); // Place a wrapper for the menu buttons directly below the navigation controller UIButton *button1 = ...; UIButton *button2 = ...; [menuWrapperView addSubview:button1]; [menuWrapperView addSubview:button2]; [self.view addSubview:menuWrapperView];
使用此方法(使用子视图控制器),您的视图和导航控制器将在需要时获取所需的内存警告,查看加载和旋转处理方法调用。