具有清晰背景的 Segue 推送动画在 iOS 7 上闪烁

Posted

技术标签:

【中文标题】具有清晰背景的 Segue 推送动画在 iOS 7 上闪烁【英文标题】:Segue Push Animation with Clear Background is Flashing on iOS 7 【发布时间】:2014-02-07 07:17:30 【问题描述】:

我有这个简单的故事板:

所有这些 UIViewController 背景都是清晰的(透明的),但我使用此代码将背景图像作为导航栏和窗口背景:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      
    // window background
    self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"window"]];

    // navbar background
    UIImage *navBackgroundImage = [UIImage imageNamed:@"navbar_bg"];
    [[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
    return YES;

通常这段代码可以在 ios 6 上运行而不会闪烁,但是今天当我尝试在 iOS 7 上构建它时,segue 动画(推送)正在闪烁。 UIViewController 的背景好像不是完全透明的。

请观看此视频:http://www.youtube.com/watch?v=-oZc9SwPJjs

谢谢

【问题讨论】:

【参考方案1】:

前段时间我遇到了同样的问题,具有透明背景的视图控制器产生了这种“效果”,实际上不是闪光灯,它是视图滑过另一个视图的动画。解决这个问题的唯一方法是删除推送的动画,确实我认为你不需要这个动画,所以看看这个问题的答案,它显示了如何改变它:

Change animation transition

或者看看这个,他有一个示例代码,你可以下载并看看它是如何工作的:

http://www.captechconsulting.com/blog/tyler-tillage/ios-7-tutorial-series-custom-navigation-transitions-more

希望对你有帮助!

【讨论】:

以上是关于具有清晰背景的 Segue 推送动画在 iOS 7 上闪烁的主要内容,如果未能解决你的问题,请参考以下文章

用于 segue 动画的 CATransition(iOS 7 之前的样式)

具有单独移动背景的自定义 segue

在 segue 中停用推送动画

在没有 UINavigationController 的情况下推送 Segue 动画

自定义推送 segue 动画

无动画推送 segue