【问题标题】:ios fade out splash screen (iphone 5 friendly)ios 淡出闪屏(iphone 5 友好)
【发布时间】:2012-02-29 08:44:53
【问题描述】:

我想欺骗每当调用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 )

【问题讨论】:

    标签: ios splash-screen


    【解决方案1】:

    我发现,从 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){
                         }];
    

    它提供了从加载屏幕到现在加载的应用屏幕的淡入淡出效果。

    【讨论】:

      【解决方案2】:

      如果这确实是您的代码,那么您的图像名称可能有错字。 (如果没有,请告诉我们“不工作”是什么意思。)

      此外,启动画面通常不会出现在每个applicationDidBecomeActive: 中。 didFinishLaunchingWithOptions: 是您知道自己已启动并且已代表您显示初始屏幕的时间。

      【讨论】:

      • 奇怪,在模拟器中每次都会启动,但在设备中它只是在初始加载时。很高兴知道。
      【解决方案3】:

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

      [self.window addSubview:splash];
      

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

      【讨论】:

        【解决方案4】:

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

        但是,您希望将此作为applicationDidFinishLaunching:options: 的一部分而不是applicationDidBecomeActive:。仅在启动画面显示时淡化它才有意义,这仅在应用程序启动且尚未运行时才有意义。当您的应用处于活动状态时,它可能已在后台运行(即已经启动),因此在这种情况下淡化启动画面是没有意义的。

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

        【讨论】:

          猜你喜欢
          • 2010-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-24
          • 1970-01-01
          • 1970-01-01
          • 2012-09-09
          相关资源
          最近更新 更多