UINavigationController中的UINavigationBars。 。 。他们不参与帧动画。有用但完全 不 我现在想要的东西。有没有办法把它关掉?
我知道我可以将showsNagitationBar属性设置为隐藏,并将我自己的属性添加到视图中,让我看看可能的交替。
我想要实现的目标:
我已将我的UINavigationController放入(屏幕大小的)容器视图中,并希望将其滑过以显示侧边菜单。 。上次我这样做我在RootVC上有自定义的推/弹方法,我自己的导航栏 - 工作正常,虽然设置了相当数量的样板代码。
这次我有同样的要求 - 主要内容是基于推/弹,以及一些可以从侧面显示的辅助VC。因此对于另一种方法,考虑到这个应用程序的外观和感觉是非常标准的,我只是在RootVC中包含了一个UINavigationController,并期望它的工作方式相同。
然而,UINavigationBar保持固定,而容器视图中的其余内容会移动。
答案 0 :(得分:1)
我不完全确定你想要实现的目标,但是当使用导航控制器时,你在屏幕上看到的全部内容(你的顶视图控制器的视图加上导航栏)都植根于导航控制器的视图中。
这意味着如果您执行以下操作:
[UIView animateWithDuration:1.0 animations:^{
CGRect frame = self.navigationController.view.frame;
frame.size.width -= 30;
self.navigationController.view.frame = frame;
}];
您将获得视图和导航栏缩小。
编辑:您可以在适当的位置添加/删除滑入视图到导航控制器的视图(例如导航控制器是您的根视图控制器,您可以在appdelegate的didFinishLaunch:
方法中执行此操作) 。以下代码将显示从左侧滑入的完全红色视图。在您的情况下,此视图将是您的侧视图控制器中的视图。
UIView *left = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
left.backgroundColor = [UIColor redColor];
CGRect ff = left.frame;
ff.origin.x = -ff.size.width;
left.frame = ff;
[self.navigationController.view addSubview:left];
[UIView animateWithDuration:1.0 animations:^{
CGRect frame = self.navigationController.view.frame;
frame.origin.x += 50;
self.navigationController.view.frame = frame;
}];
这就是你想要的东西吗?