ios淡出闪屏(iphone 5友好)

ios淡出闪屏(iphone 5友好)

问题描述:

我想要欺骗主屏幕淡出的感觉,只要applicationDidBecomeActive被调用,但它不工作。我究竟做错了什么?ios淡出闪屏(iphone 5友好)

- (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) 

如果这确实是您的代码,您可能在图像名称中有拼写错误。 (如果没有,让我们知道什么“不工作”的意思)。

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

+1

奇怪的是,在模拟器中,每次都会出现飞溅,但在设备中它只是在初始加载时。很高兴知道。 – Jacksonkr 2012-02-07 22:38:06

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

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

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

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

[self.window addSubview:splash]; 

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

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

- (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){ 
        }]; 

即将开始这样做

-(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; 
} 

然后给出了一个十字架从加载屏幕fadeish效果,现在装应用屏幕。

+0

这是正确的解决方案 – 2016-04-20 13:41:22