在 iOS 7 中,如果正在呈现的 View Controller 的 View 背景颜色是 [UIColor clearColor]
,动画会变得非常不稳定/在一半的过程中卡住。
我想知道是否有任何解决办法?
最佳答案
这真的很有趣。不过,我认为它一点也不起伏不定:那是导航 Controller 正在执行的实际动画,它看起来有所不同,因为推送的 View Controller 具有清晰的 View 。
考虑类似情况下的两个不透明 View Controller (为便于引用,将它们称为“A”和“B”)。给 A 一堆跨越整个 View 宽度的内容——我在标签中使用了大部分字母表。什么内容无关紧要,只要您能看到它并清楚地告诉它离动画结束有多远。
现在按 B。在它覆盖整个屏幕之前,看看 A 的内容的哪一部分您仍然可以看到。您应该会发现 A 的内容并不像您预期的那样几乎完全在屏幕外;相反,它只是向左移动了一点。在我的字母表测试中,我没有看到像“w”这样的晚写字母的尾端,而是看到了一点“g”。 A 只移动了六七个字母的值:
您的清晰推送 View 也发生了同样的事情。底层的不透明 View 会移动,但不会一直移动到屏幕边缘;相反,它的移动刚好足以给观看者以运动的印象,然后停在那里直到过渡结束。之后,它可以从 View 层次结构中删除(因为它在理论上不再可见)并因此消失。
您可以使用 iOS 7 View Controller 转换 API 来避免这种行为。参见,例如,objc.io article about them或 WWDC session videos获取更多信息。不过,您最终会重新实现整个幻灯片切换,并且可能还需要自己做一些工作来支持滑动返回手势。
关于ios - UINavigationController 动画断断续续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109240/