ios - 在导航 Controller 上推送时 View 变暗

标签 ios objective-c uiviewcontroller uinavigationcontroller transitions

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

问题是我可以看到,当新的 View Controller 从右侧出现在屏幕上时,一开始它就像是有一些浅色的深色覆盖层在 viewDidApear 之后消失了打电话。

每个 View Controller 都有一个 self.view.backgroundColor = [UIColor clearColor]。 如果我暂时改变它,一切都很好。 也许我应该以另一种方式设置应用程序的背景? 如果不是,如何避免这种暗化效应?

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

最佳答案

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

有几个可能的解决方案:

  • 在您的 viewController 上设置背景颜色(由于您的全局背景图像,可能不适合您)。最简单的解决方案,但需要更改您的设计。
  • 使用新的 iOS 7 API 实现您自己的转换。参见 an example here和一篇来自 Big Nerd Ranch here 的文章.如果您想保留背景图片,这确实是解决问题的“正确”方法。
  • 添加 UINavigationController 类别以添加更简单的“复古”推送和弹出动画,as per this answer .这更像是一种快速而棘手的解决方案。

关于ios - 在导航 Controller 上推送时 View 变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21427048/

相关文章:

ios - 从存档中解压缩单个文件

ios - UISearchController 的 UITableView 顶部的额外空间

iphone - 如何跨 View Controller 共享 UIView 和其他元素?

ios - SWReveal - 在应用程序启动时更改 frontviewcontroller

iphone - 我的 ARC 应用程序如何在 iOS 3.x 中运行?

ios - 访问 UITabBarController 以通过 Storyboards 分配 Action

ios - 为ios制作的应用程序使用虚拟机吗?

ios - 如何将核心数据模型从“xcdatamodel”迁移到“xcdatamodeld”?

iphone - 从 NSString 中的某个字符获取子字符串

ios - OSX : Auto layout/constraints not displaying content