UINavigationBar frame animation not possible?
UINavigationController中的
UINavigationBars。 。 。他们不参与帧动画。有用,但现在不是我想要的。有没有办法关闭此功能?
我知道我可以将showsNagitationBar属性设置为hidden,然后将自己的属性添加到视图中,以便研究可能的替代方案。
我要实现的目标:
我已经将UINavigationController放入(屏幕大小)容器视图中,并希望将其滑动以显示侧面菜单。 。上一次这样做时,我在RootVC上有自定义的push / pop方法,而且我自己的导航栏也很好用,尽管要设置大量样板代码。
这次我有相同的要求-主要内容是基于推送/弹出,还有一些可以从侧面显示的辅助VC。因此,对于另一种方法,并考虑到该应用程序的外观和感觉是非常标准的,我只是在RootVC中包含了UINavigationController,并希望它能够正常工作。
但是,UINavigationBar保持锚定在原处,而容器视图中的其余内容在移动。
我不确定您要实现的目标,但使用导航控制器时,您在屏幕上看到的全部内容(顶视图控制器的视图加上导航栏)都植根于导航控制器的视图。
这意味着如果您执行以下操作:
1 2 3 4 5 | [UIView animateWithDuration:1.0 animations:^{ CGRect frame = self.navigationController.view.frame; frame.size.width -= 30; self.navigationController.view.frame = frame; }]; |
您将获得视图,并且导航栏将缩小。
编辑:您可以在适当的位置将滑入式视图添加/删除到导航控制器的视图中(例如,导航控制器是您的根视图控制器,您可以在appdelegate的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; }]; |
您正在寻找这样的东西吗?