0

UINavigationController 中的 UINavigationBars。. . 他们不参与帧动画。有用,但不是我现在想要的。有没有办法关闭它?

我知道我可以将 showsNagitationBar 属性设置为隐藏,并将我自己的属性添加到视图中,然后查看可能的替代方案。

我想要实现的目标:

我已将 UINavigationController 放入(屏幕大小的)容器视图中,并希望将其滑过以显示侧面菜单。. 上次我这样做时,我在 RootVC 上有自定义推送/弹出方法,以及我自己的导航栏 - 工作正常,尽管需要设置相当多的样板代码。

这次我也有同样的要求——主要内容是push/pop为主,还有一些辅助VC可以从侧面透露出来。所以对于另一种方法,考虑到这个应用程序的外观和感觉非常标准,我只是在 RootVC 中包含了一个 UINavigationController 并希望它能够正常工作。

然而,UINavigationBar 保持锚定,而容器视图中的其余内容移动。

4

1 回答 1

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;
}];

像这样的东西是你要找的吗?

于 2013-09-19T10:15:02.657 回答