在导航控制器上按下时视图变暗

krz*_*iek 9 objective-c transitions uiviewcontroller uinavigationcontroller ios

我正在通过segues在NavigationController上推送ViewControllers.我有自己的子类NavigationController,它已插入UIImageView索引0 - 它是我整个应用程序的背景.

问题是我可以看到,当新的视图控制器从右侧进入屏幕时,在开始时就像是有一些浅黑色覆盖,当刚刚viewDidApear被调用时它会消失.

每个视图控制器都有一个self.view.backgroundColor = [UIColor clearColor].如果我改变它,一切都很好.也许我应该以另一种方式设置应用背景?如果没有,如何避免这种黑暗效应?

在这里你有这种效果的屏幕截图:http: //tinypic.com/r/34j9ffs/8

Jam*_*ost 4

这是因为UINavigationControlleriOS 7 中标准的推送动画。当一个新的 VC 被推送到堆栈上时,它会将自己覆盖在前一个 VC 的顶部,并在其下方有一个轻微的阴影。因此,当您推送具有清晰背景的视图控制器时,您会在转换发生时看到阴影。

有几种可能的解决方案:

  • 在视图控制器上设置背景颜色(由于全局背景图像,可能不适合您)。最简单的解决方案,但需要更改您的设计。
  • 使用新的 iOS 7 API 实现您自己的转换。请参阅此处的示例和Big Nerd Ranch的文章。如果您想保留背景图像,这确实是解决您问题的“正确”解决方案。
  • 根据此答案,添加一个UINavigationController类别以添加更简单的“复古”推送和弹出动画。这更像是一种快速且简单的解决方案。