UINavigationController 在 iOS 7 中推送动画不流畅

Posted

技术标签:

【中文标题】UINavigationController 在 iOS 7 中推送动画不流畅【英文标题】:UINavigationController push animation not smooth in iOS 7 【发布时间】:2013-12-31 07:37:53 【问题描述】:

我正在开发 ipad 应用程序,其中我使用 UINavigationController 推送另一个视图控制器。一切正常,除了推送动画不流畅。当我按下视图控制器时,当我将视图的背景颜色设置为clearColor 时,我可以看到前一个屏幕。

但这在 ios 6 中可以正常工作。然后我注意到 iOS 7 发行说明中的​​ UIViewGroupOpacity 来自:

https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-7.0/index.html

我想这会导致制作动画时出现问题。

有没有人知道 iOS 7 中这个问题的解决方案?谢谢。

我也没有任何花哨的代码来推送视图控制器。我正在使用下面的代码来推送

[self.navigationController pushViewController:vc animated:YES];

【问题讨论】:

【参考方案1】:

只需添加:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

这个:

[[self window] setBackgroundColor:[UIColor whiteColor]];

最终结果:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions     
    [[self window] setBackgroundColor:[UIColor whiteColor]];

    // Override point for customization after application launch.
    return YES;

【讨论】:

【参考方案2】:

您可以尝试通过项目中的情节提要来实现。您所要做的就是创建包含在 UINavigationController 中的视图控制器,并通过保持控制并从一个 vc 移动到下一个来连接情节提要中的 push segue。然后命名它,并在您呈现视图的 vc 中,实现 prepareSegue 方法:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

   if (segue.identifier isEqualToString:<#string#>) 
      <#UIViewController#> *viewController = segue.destinationViewController;

      // do any customization with the above variable
   

希望对您有所帮助

【讨论】:

感谢您的回复。但我们没有在项目中使用 StoryBoard。【参考方案3】:

使用 Arne 在以下问题中提供的 UINavigationController+Retro.h 解决了我的问题

Restore pre-iOS7 UINavigationController pushViewController animation

非常感谢阿恩

【讨论】:

以上是关于UINavigationController 在 iOS 7 中推送动画不流畅的主要内容,如果未能解决你的问题,请参考以下文章

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

从嵌入在 UINavigationController 中的一个视图控制器到另一个 UINavigationController

(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换

关闭 UINavigationController 并呈现另一个 UINavigationController

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

UINavigationController 标题和按钮