显示UINavigationBar的后退按钮不推视图控制器

问题描述:

在iPad的照片应用程序,当你点击一个专辑图片的堆栈扩展以填充屏幕 - 你在同样的观点是,它只是重新安排电网一点。但是在顶部,出现了一个左箭头式的“后退”按钮,就好像pushViewController已被使用一样 - 除了它会整齐地褪色而不是滑入。当您点击它时,它会再次淡出,而不是滑出。显示UINavigationBar的后退按钮不推视图控制器

有没有办法来复制这种行为?到目前为止,我已经尝试了几个选项,可能只是缺少一些东西。我试过什么:

  • 设置self.navigationItem的leftBarButtonItem工作,但给了我一个方形按钮,而不是有角度的后退式的一个 - 有一些黑客在网上来完成这项工作,如使用图片为按钮,但我宁愿只使用它们,如果肯定没有“官方”的方式来做到这一点。

  • 设置self.navigationItem.backBarButtonItem - 这通常用于在推送视图控制器时自定义后退按钮,因此它不起作用。

  • [self.navigationController.navigationBar setItems ::] - 这个工程,但它给我的滑动动画,而不是衰落。因此,我使用动画:NO来使它刚刚出现。下行:当点击返回时,你得到滑出动画,这看起来很奇怪,因为其余的用户界面保持不变。

有没有人设法复制这种效果?

在此先感谢!

你的第一种方法可能是最好的。

它不必是超级哈克,你可以使用普通的UIButton和定制它看起来像使用backgroundImageForState:titleForState:(等)后退按钮,然后设置UIButton对象的customViewUIBarButtonItem

许多应用这些天自定义按钮的外观&感觉,无论如何,所以使用自定义背景图片是很正常的。如果你使用resizableImageWithCapInsets:(或stretchableImageWithLeftCapWidth:topCapHeight:如果您需要早于5.0支持的iOS),然后单击按钮仍然可以延伸到适合任何文字走了进去,而且因为它是一个正常的UIButton文字本地化,等我不认为这种方法要做到这一点,这是一个非常合理的方式来解决UIBarButtonItem对象的有限功能。

优于从不迟到。

要显示返回按钮没有按下一个视图控制器,上UINavigationBar使用pushNavigationItem:animated:popNavigationItemAnimated:。这些导致标准的幻灯片动画和后退按钮的创建。但是,除了在持续时间进行有根据的猜测之外,无法确保您的内容动画与条形动画同时运行。

由于iOS 7有一个更好的API来实现这种效果,在这种情况下,您仍然推送并弹出视图控制器,但是您通过UINavigationControllerDelegate提供了通过navigationController:animationControllerForOperation:fromViewController:toViewController:的自定义过渡动画。这可以使条和内容之间的动画完美协调。

最后,如果您的内容前后由UICollectionViewController管理,则可以使用useLayoutToLayoutNavigationTransitions,该设计用于像Photos这样的用例。