我正在使用 UINavigationController
工具栏。在显示之前,我调整了 View 的大小,以便它们不会被工具栏挡住(我将当前 View Controller View 的框架设置为从 navigationBar
底部到 toolbar
顶部的矩形。
但并非我所有的 View Controller 都有 toolbarItems
。因此,当从具有项目( Controller A)的 View Controller 切换到没有项目( Controller B)的 View Controller 时,我想隐藏工具栏。但是,当我在 B 的 setToolbarHidden:animated:
方法中调用 viewWillAppear:animated:
时,工具栏在推送转换期间向下动画并显示其背后的 UIWindow
背景。
这也发生在相反的方向:当从 B 转换到 A(通过后退按钮)时,我希望工具栏动画以再次显示 A 的 toolbarItems
,但由于 A 的 View 没有延伸到屏幕底部, UIWindow
在 pop 转换期间可见。
这可能不是最好的描述,所以这里是一个屏幕截图:
我尝试在其 viewWillDisappear:animated:
方法中更新 A 的框架,但它做了奇怪的事情,因为它似乎在 UINavigationController
推送动画块中被调用。任何见解将不胜感激。
更新 :我尝试将工具栏隐藏在 B 的 viewDidAppear:animated:
中,但结果并不理想。使用此解决方案,在推送转换完成之前,工具栏不会被关闭。由于 B 没有任何 toolbarItems
,A 的项目在转换过程中被推到左边,在它消失之前在屏幕上留下一个空的工具栏。此外,当返回 A 时,UIWindow
背景将可见,除非我将工具栏设置为在 B 的 viewWillDisappear:animated:
中可见,这意味着 B 必须知道 A 有 toolbarItems
。
最佳答案
也许最好的做法是在 B 的 setToolbarHidden:animated:
中调用 viewDidAppear
?
或者,您可以在自定义 pushViewController:animated:
子类中的 UINavigationController
方法中将 B 推送到导航 Controller 之前更改 A 的框架。
关于iphone - 使用 UINavigationController setToolbarHidden :animated: 时如何调整 View 大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4796304/