在iOS中实现启动画面

Pat*_*ote 41 splash-screen objective-c multiple-views ios

我是Cocoa,Objective-C和iOS开发的新手.

我想实现一个只是一个启动画面的视图,并且在路由到主视图之前只持续很短的时间.你对我应该如何实现它有任何想法吗?任何教程或代码示例?我有一些有多个视图,但没有一个计时器在几秒钟之后重定向到另一个,就像我想做的那样.

Esp*_*sso 40

请参阅iOS应用程序编程指南下的应用程序启动(默认)图像.

还应该注意到Apple建议不要将启动图像作为启动画面滥用. Apple HIG

  • 但大多数着名的应用程序都有,不是吗?http://www.appcoda.com/wp-content/uploads/2012/05/Sample-iOS-Splash-Screen.jpg (17认同)
  • @LordFlash仅仅因为很大一部分人做某事并不一定使它成为做事的"正确"方式:)据说Apple在技术上是唯一不需要强制执行品牌识别的iOS应用程序制造商,但仍然: ) (2认同)

Nig*_*der 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];}];
Run Code Online (Sandbox Code Playgroud)

  • 我知道Apple和大多数用户都无法忍受这些延迟的默认图像,但有时候我们的开发人员无法决定!无论如何,向你提出这个问题的第一个非常明确的答案. (3认同)
  • Noob问题,我从哪里获得"firstViewController"? (2认同)

Waq*_*aja 12

当@Espresso发布链接时,我只是想向你解释一下.

如果您只是在项目中放置名为Default.png的图像,那么它将用于启动画面.但是,您可以通过在plist文件中明确指定它来使用不同的图像名称.


Bha*_*rat 11

我知道我正在回答差不多一年的问题,但这可能有助于其他人 -

我刚刚发现你可以在XCode4中做到这一点!这使得这个过程变得相当简单.

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

  • 其实这是一个很棒的方法!它甚至为Retina显示图像命名/重命名. (2认同)

nyl*_*und 6

其他答案都很好,但我想补充一点,对于iPhone应用程序,你的Default.png应该是320x480,对于视网膜显示,你应该添加Default@2x.png 640x960.