在iOS中实现启动画面

41

我在Cocoa、Objective-C和iOS开发方面是新手。

我想实现一个视图,它只是一个闪屏,并且只会持续很短的时间,然后转到主视图。你有任何关于如何实现它的想法吗?有任何教程或代码示例吗?我有一些使用多个视图的示例,但没有像我想要的那样设置定时器在几秒钟后重定向到另一个视图。

11个回答

40

17
但是大多数著名的应用程序都会有这个功能,不是吗? http://www.appcoda.com/wp-content/uploads/2012/05/Sample-iOS-Splash-Screen.jpg - Tobias
2
@LordFlash 只因为很多人做某件事并不一定意味着这是“正确”的做法 :) 话虽如此,苹果从技术上讲是唯一一个不需要强制执行品牌认同的iOS应用程序制造商,但仍然 :) - Daniel Galasko

32

你可以在appDelegate中轻松地实现你的视图叠加在主视图之上。例如,如果你想要一个淡出到主视图的启动图像:(或者一个似乎淡出的默认图像:只需将相同的图像放在启动屏幕和默认屏幕上)。 这样也可以让你获得正确的方向,只要它是主视图的方向。

只需将其添加到你的application:(UIApplication *)application didFinishLaunchingWithOptions:方法中:

 UIImageView*imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"your_default_image_or_another.png"]];
[[firstViewController view] addSubview:imageView];
[[firstViewController view] bringSubviewToFront:imageView];

// as usual
[self.window makeKeyAndVisible];

//now fade out splash image
[UIView transitionWithView:self.window duration:1.0f options:UIViewAnimationOptionTransitionNone animations:^(void){imageView.alpha=0.0f;} completion:^(BOOL finished){[imageView removeFromSuperview];}];

当我使用NightCoder提供的代码时,在iPhone模拟器上我得到了期望的带有淡出效果的启动画面,但是图片似乎被放大了2倍:我只能看到初始图片(即启动图)左上角的四分之一,被放大至全屏。在启动时,启动图以正确的尺寸显示,然后才会出现启动画面。此外,启动画面似乎不会出现在设备上,只会在模拟器上出现:在iPhone上运行时,它只显示启动图。这两个问题的原因和解决方案是什么? - user1492198
我的问题已经解决了:文件扩展名是大写的,我必须声明一个框架和内容模式。 - user1492198
3
我知道苹果和大多数用户都受不了这些延迟的默认图片,但有时候开发者并不能决定!无论如何,你对这个问题给出了第一个真正清晰的答案。 - Mick Byrne
2
新手问题,我从哪里获取“firstViewController”? - Ruben Martinez Jr.

12

正如 @Espresso 发布的链接,我只是想向你解释一下。

如果你在项目中放置了一个名为 Default.png 的图片,则它将用于启动画面。但是,你可以通过在 plist 文件中明确指定不同的图片名称来使用不同的图片。


11

我知道我正在回答一个快一年前的问题,但它可能会帮助其他人-

我刚刚发现您可以在 XCode4 中做到这一点!这使得这个过程现在变得非常简单。

  1. 在导航视图中选择您的项目
  2. 在目标下选择您的应用程序
  3. 选择摘要选项卡
  4. 向下滚动,您将看到添加启动画面图像的位置
  5. 右键单击框以选择文件

2
实际上这是一个很好的方法!它甚至可以为Retina显示屏图像进行命名/重命名。 - bobobobo

6

其他答案都很好,但我想补充一点,在iPhone应用中,你的Default.png应该是320x480,而对于Retina显示屏,你应该添加Default@2x.png 640x960。


4
在XCode 4中,您可以点击左侧层次结构中的项目名称(父级)。 然后,在摘要选项卡下,在iPhone和iPad下,您将能够从文件系统中为每个表单选择启动图像

是的,这容易多了。谢谢。不过在Xcode 5中有点不同。 - Lucas

3

要添加启动画面,只需将所有默认图像(如default@2x.png等)替换为具有相同默认名称的启动图像(适用于所有硬件显示类型)。 要增加启动画面的持续时间,在appDelegate方法中进行设置。

didFinishLaunchingWithOptions 

如果您想要让主线程等待一段时间,可以使用以下代码:

[NSThread SleepForTimeInterval:(Your time interval)];

您还可以在代码中使用sleep(时间间隔)函数。

didFinishLaunchingWithOptions

sleep(3);

睡眠对你不利!我差点就要给这个答案点踩了,但我觉得自己对它的态度还不够强硬。 - Oded Ben Dov

3

我刚刚自己也不得不解决这个问题,所以想发布一个更新。

我发现在 Info.plist 中设置支持的界面方向后,它才能正常工作。

我还发现 iOSDeveloperTips.com 上的这篇文章非常有用:管理多个启动图像


2

您只需要添加三个图片来适配 iPhone、iPhone 5 和 iPad,分别命名为 Default.png、Default-568h@2x.png 和 Default@2x.png。现在图片的清晰度取决于您所使用的尺寸,建议使用标准尺寸。


1

要添加启动画面,首先将该图片添加到您的项目中,然后在 AppDelegate 方法中的 didFinishLaunching 方法中添加以下代码。

[NSThread SleepForTimeInterval:(Time interval)];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接