UINavigationController中toolbar
属性的文档说:
此属性包含对导航控制器管理的内置工具栏的引用。仅为希望从工具栏显示操作表的客户端提供对此工具栏的访问权限。您不应直接修改UIToolbar对象。
我可以理解为什么我不应该修改工具栏的可见性或项目,因为UINavigationController提供了一个接口来做到这一点。但是我添加了一个按钮,当点击时,会使工具栏在屏幕外显示动画。我为什么不这样做?
我是否必须创建自己的ToolbarNavigationController类,复制UINavigationController对工具栏所做的一切,我可以用工具栏做我想做的事情?当UINavigationController已经完成我想要的工作时,似乎是在浪费精力。为什么这些文件会让我严格限制我用它做什么呢?
答案 0 :(得分:2)
移动导航栏的三种方法可能会让人感到困惑:
viewController
的{{1}}设置为YES
并返回,navigationController
是否将其工具栏放回原来的位置?另一方面,如何调用hidesBottomBarWhenPushed - 这样做可以做到你想要的,同时让导航控制器保持对其工具栏的控制吗?
修改:抱歉误读。是的,只要你不做任何事情(比如上面的第3项),你就可以做你所要求的事情,这意味着navigationController
会移动它的工具栏。
另一方面,您所需的行为也可以通过以下方式实现:
viewController
,请将其hidesBottomBarWhenPushed
设置为YES
。viewController
所需的工具栏放在所有上,并让它完全控制其位置和可见性。如果默认工具栏与navigationController自己的工具栏具有相同的布局,这将创建奇怪的视觉效果,即看到同一组工具栏项目滑下然后再打开,但其他一切都应该有效。
答案 1 :(得分:0)
UIToolbar无法访问,因为它不需要 可访问。它响应+外观就好了。在您的情况下,您可以访问只读变量的属性(查看CGRect!)。如果需要在屏幕外设置UIToolbar或UINavigatiomBar的动画,请将其frame.center属性设置为等于UIView动画块中的CGPointMake。