ios淡出闪屏(iPhone 5友好)

我想要欺骗的主要启animation面淡出的感觉,每当applicationDidBecomeActive调用,但它不工作。 我究竟做错了什么?

 - (void)applicationDidBecomeActive:(UIApplication *)application { if(IS_IPHONE_5) splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; else splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; [self.window.rootViewController.view addSubview:splash]; [UIView animateWithDuration:0.5 animations:^{ splash.alpha = 0; } completion:^(BOOL finished) { [splash removeFromSuperview]; }]; } 

那么你需要定义下面的地方。 我使用的项目.pch但你可以使用你的头,如果你想。

 #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON ) 

如果这真的是你的代码,你可能在图像名称中有一个错字。 (如果没有,让我们知道什么是“不工作”的意思)。

另外,启animation面通常不会出现在每个applicationDidBecomeActive:didFinishLaunchingWithOptions:是你知道你已经启动的时间和闪屏已经以你的名义显示的时间。

我发现,从ios6你会得到一个很好的过渡

 -(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [UIView animateWithDuration:0.2 delay:0 options: UIViewAnimationCurveEaseIn animations:^{ self.window.viewForBaselineLayout.alpha = 0; // and at this alpha } completion:^(BOOL finished){ }]; return YES; } 

然后立即在开始

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [UIView animateWithDuration:0.5 delay:0 options: UIViewAnimationCurveEaseOut animations:^{ self.window.viewForBaselineLayout.alpha = 1; // and at this alpha } completion:^(BOOL finished){ }]; 

它从加载屏幕到现在加载的应用程序屏幕提供了一个交叉淡入淡出的效果。

尝试将其直接添加到您的窗口,而不是rootViewController.view。

 [self.window addSubview:splash]; 

您可能还需要使用view.transform旋转图像以与启动图像alignment。

你的代码看起来是正确的; 我在几个应用程序中这样做。

但是,您希望将其作为applicationDidFinishLaunching:options:一部分执行,而不是在applicationDidBecomeActive: 。 只有在应用程序启动并且尚未运行时才显示启animation面,这只是有意义的。 当你的应用程序变得活跃时,它可能已经在后台 – 也就是已经启动 – 所以在这种情况下,闪屏的淡出是没有意义的。

或者,您是否希望启animation面在启动时始终显示,即使它是从暂停状态的背景中恢复的?