Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios淡出启动屏幕(iphone 5友好型)_Ios_Splash Screen - Fatal编程技术网

ios淡出启动屏幕(iphone 5友好型)

ios淡出启动屏幕(iphone 5友好型),ios,splash-screen,Ios,Splash Screen,我想假装每当调用applicationIDbecomeactive时,主闪屏就会消失,但它不起作用。我做错了什么 - (void)applicationDidBecomeActive:(UIApplication *)application { if(IS_IPHONE_5) splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; else

我想假装每当调用
applicationIDbecomeactive
时,主闪屏就会消失,但它不起作用。我做错了什么

- (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 )
#定义为"IPHONE"5(晶圆((双)[[UIScreen mainScreen]边界].size.height-(双)568)
您的代码看起来大致正确;我在几个应用程序中这样做

但是,您希望在
ApplicationIDFinishLaunching:options:
中执行此操作,而不是在
ApplicationIDBecomeActive:
中执行此操作。只有当应用程序启动且尚未运行时,才有必要在显示启动屏幕时将其淡入淡出。当你的应用程序处于活动状态时,它可能已经在后台——即已经启动了——因此在这种情况下淡出启动屏幕是没有意义的


或者,您是否希望启动屏幕在激活时始终显示,即使它从挂起状态从后台恢复?

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


另外,启动屏幕通常不会在每个
applicationIDBecomeActive:
出现
didFinishLaunchingWithOptions:
是您知道自己已启动并且启动屏幕已代表您显示的时间。

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

[self.window addSubview:splash];

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

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

从加载屏幕到现在加载的应用程序屏幕,它会产生一种交叉fadeish效果。

奇怪的是,在模拟器中,每次飞溅都会出现,但在设备中,它只在初始加载时出现。很高兴知道。