3

我有一个加载速度非常快的简单 iPhone 应用程序,因此启动画面只显示几分之一秒。有什么方法可以控制启动画面显示多长时间?我四处寻找,并没有发现任何似乎可行的东西。我必须用我的启动图像创建一个子视图吗?我将如何控制它的显示时间并在子视图和主视图之间切换?

4

4 回答 4

6

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

启动时,只需放置一个看起来与启动屏幕完全相同的视图并使用 anNSTimer将其关闭。真的很容易。

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

但是,不要在每次应用程序激活时都显示启动画面。我曾经在我的应用程序的上下文中出于非常具体和有用的目的这样做 - 但 Apple 拒绝了它。嘿,他们甚至在星期六晚上打电话给我解释。

于 2012-04-10T18:56:18.930 回答
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 上添加了一个示例项目。

于 2012-04-10T19:09:52.983 回答
3

不要这样做和/或在这里阅读为什么

iOS 启动画面的持续时间 (Default.png)

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

于 2012-04-10T18:49:41.303 回答
3

现在,我完全同意上面的帖子,你不应该这样做,但如果你仍然愿意,可以通过将以下内容添加到你的AppDelegate.m.

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

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

于 2012-04-11T02:18:02.290 回答