ios - UINavigationController 动画断断续续

标签 ios objective-c cocoa-touch uiviewcontroller

在 iOS 7 中,如果正在呈现的 View Controller 的 View 背景颜色是 [UIColor clearColor],动画会变得非常不稳定/在一半的过程中卡住。

我想知道是否有任何解决办法?

最佳答案

这真的很有趣。不过,我认为它一点也不起伏不定:那是导航 Controller 正在执行的实际动画,它看起来有所不同,因为推送的 View Controller 具有清晰的 View 。

考虑类似情况下的两个不透明 View Controller (为便于引用,将它们称为“A”和“B”)。给 A 一堆跨越整个 View 宽度的内容——我在标签中使用了大部分字母表。什么内容无关紧要,只要您能看到它并清楚地告诉它离动画结束有多远。

现在按 B。在它覆盖整个屏幕之前,看看 A 的内容的哪一部分您仍然可以看到。您应该会发现 A 的内容并不像您预期​​的那样几乎完全在屏幕外;相反,它只是向左移动了一点。在我的字母表测试中,我没有看到像“w”这样的晚写字母的尾端,而是看到了一点“g”。 A 只移动了六七个字母的值:

Before the transition Near the end of the transition (note the g)

您的清晰推送 View 也发生了同样的事情。底层的不透明 View 会移动,但不会一直移动到屏幕边缘;相反,它的移动刚好足以给观看者以运动的印象,然后停在那里直到过渡结束。之后,它可以从 View 层次结构中删除(因为它在理论上不再可见)并因此消失。

您可以使用 iOS 7 View Controller 转换 API 来避免这种行为。参见,例如,objc.io article about themWWDC session videos获取更多信息。不过,您最终会重新实现整个幻灯片切换,并且可能还需要自己做一些工作来支持滑动返回手势。

关于ios - UINavigationController 动画断断续续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109240/

相关文章:

ios - 从 Windows 机器访问 iOS Safari Web Inspector

ios - 滑动手势 View Controller Xcode 5.1.1

ios - 具有多个(线程)上下文的核心数据唯一属性

ios - UISlider 拇指在不接触拇指的情况下移动

iphone - 将 NSArray 保存到 NSUserDefaults 并在 NSMutableArray 中获取它

ios - 如果输入的值超过指定的整数,则清除 UITextField

ios - 如何在 SwiftUI 中的两个观察对象之间传递数据

ios - 使用 AVCaptureDevice 时重置 UI 开关

iphone - 触摸事件延迟

ios - Delphi ios 在 ImageControl 中缩放位图