在iPad的照片应用程序中,当你点击一个相册时,一堆图片会扩展以填满屏幕 - 你在同一个视图中,它只是稍微重新排列了网格。但是在顶部,会出现一个左箭头样式的Back按钮,就好像使用了pushViewController一样 - 除了它整齐地淡入,而不是滑入。当你点击它时,它会再次淡出,而不是滑出。
有没有办法复制这种行为?到目前为止,我已经尝试了一些选项,可能只是遗漏了一些东西。我尝试了什么:
设置self.navigationItem的leftBarButtonItem可以工作,但是给我一个方形按钮而不是一个有角度的Back-style - 有几个hacks在线使这个工作,比如使用图片作为按钮,但我'如果肯定没有“官方”的方法,那么只能使用它们。
设置self.navigationItem.backBarButtonItem - 这通常用于在按下视图控制器时自定义后退按钮,因此它不起作用。
[self.navigationController.navigationBar setItems ::] - 这有效,虽然它给了我滑动动画而不是褪色。结果,我使用动画:NO使其出现。缺点:当点击Back时,你做获得滑动动画,这看起来很奇怪,因为UI的其余部分保持静止。
有没有人设法复制这种效果?
提前致谢!
答案 0 :(得分:0)
你的第一种方法可能是最好的。
它不一定是超级hacky,您可以使用普通UIButton
并使用backgroundImageForState:
和titleForState:
(等)将其自定义为后退按钮,然后将UIButton
对象设置为customView
的{{1}}。
现在很多应用都会定制外观和外观。无论如何感觉按钮,所以使用自定义背景图像是很正常的。如果您使用UIBarButtonItem
(或resizableImageWithCapInsets:
,如果您需要支持早于5.0的iOS),那么该按钮仍然可以拉伸以适应内部的任何文本,因为它是正常的stretchableImageWithLeftCapWidth:topCapHeight:
文本可以本地化等等。我不认为这种方法是hacky,它是一种完全合理的方式来绕过UIButton
对象的有限功能。
答案 1 :(得分:0)
迟到总比没有好。
要在不推动视图控制器的情况下显示后退按钮,请在UINavigationBar
上使用pushNavigationItem:animated:
和popNavigationItemAnimated:
。这些导致标准幻灯片动画和后退按钮的创建。但是,除了对持续时间做出有根据的猜测之外,没有办法确保您的内容动画与条形动画同时运行。
由于iOS 7有更好的API来实现此效果,您仍然可以推送和弹出视图控制器,但您可以通过UINavigationControllerDelegate
中的navigationController:animationControllerForOperation:fromViewController:toViewController:
提供自定义过渡动画。这样就可以完美地协调条形图和内容之间的动画。
最后,如果您之前和之后的内容由UICollectionViewController
管理,则可以使用useLayoutToLayoutNavigationTransitions
,这是专为照片等用例设计的。