在iPhone上显示更长的启动/加载屏幕

时间:2012-04-10 18:46:14

标签: iphone objective-c xcode xcode4 splash-screen

我有一个非常快速加载的简单iPhone应用程序,因此启动画面只显示几分之一秒。有没有办法控制启动画面显示的时间?我四处搜寻,但没有找到任何看似可行的东西。我是否必须使用我的初始图像创建子视图?如何控制显示时间并在子视图和主视图之间切换?

4 个答案:

答案 0 :(得分:6)

虽然我同意这里表达的观点以及另一个问题,即为什么你不应该“滥用”默认屏幕,但在我看来实现这种效果是非常微不足道的:

启动时,只需放置一个看起来与启动画面完全相同的视图,然后使用NSTimer将其关闭即可。真的很容易。

// viewDidLoad
[self performSelector:@selector(dismiss) 
           withObject:nil 
           afterDelay:yourTimeIntervalInSectons];
// dismiss
[self performSegueWithIdentifier:@"ID" sender:nil];

但是,每次应用程序变为活动状态时都不会出现启动画面。我曾经在我的应用程序环境中做了一个非常具体和有用的目的 - 但Apple拒绝了它。嘿,他们甚至在星期六晚上打电话给我解释。

答案 1 :(得分:5)

虽然我同意这里所说的所有内容,但我也必须使用计时器实现一次启动画面,所以这里是代码:

- (void)showSplashWithDuration:(CGFloat)duration
{
    // add splash screen subview ...

    UIImage *image          = [UIImage imageNamed:@"Default.png"];
    UIImageView *splash     = [[UIImageView alloc] initWithImage:image];
    splash.frame            = self.window.bounds;
    splash.autoresizingMask = UIViewAutoresizingNone;
    [self.window addSubview:splash];


    // block thread, so splash will be displayed for duration ...

    CGFloat fade_duration = (duration >= 0.5f) ? 0.5f : 0.0f;
    [NSThread sleepForTimeInterval:duration - fade_duration];


    // animate fade out and remove splash from superview ...

    [UIView animateWithDuration:fade_duration animations:^ {
        splash.alpha = 0.0f;
    } completion:^ (BOOL finished) {
        [splash removeFromSuperview];
    }];
}

只需在AppDelegate的-applicationDidFinishLaunching:withOptions:方法

中调用该函数即可

@ asgeo1:代码对我来说效果很好(我在几个项目中使用了类似的代码)。为方便起见,我在Dropbox上添加了example project

答案 2 :(得分:3)

不要这样做和/或阅读原因

iOS Duration of Splash Screen (Default.png)

延长Default.png的持续时间确实没有意义。

答案 3 :(得分:3)

现在,我完全赞同上述帖子,您不应该这样做,但如果您仍希望通过将以下内容添加到AppDelegate.m中,则可以非常轻松地实现这一目标。

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    sleep(2);
}

“2”代表睡眠的秒数。它将接受“.5”

之类的值