我可以animationiOS8的LaunchScreen.xib图像

题:
有没有方法在Xcode 6项目的LaunchScreen.xib文件中设置任何目标为iOS 8.1+进行部署?

语境:
我正在寻找简单的animation来传达活动或作为一个分心的用户,而他们等待…

例子:

  • 一个载入栏
  • 活动指标
  • animationGIF
  • 在屏幕上移动UIImage
  • 旋转图像

不。

“启动图像”仅在用户select启动应用程序和应用程序实际开始运行之间的时间段内显示。 在此期间,您的应用程序无法执行任何操作,例如执行animation – 尚未运行。 启动图像只是一个静态图像,如果devise良好,可以帮助用户感觉到您的应用程序已经准备就绪。

(一些开发人员忽略了HIG,并使用启动图像来提供启animation面,有时还会显示一个animation,但在这种情况下,启animation面仍然是一个静态图像,一旦应用程序开始运行,animation就会发生 -正在运行的应用程序绘制的第一帧animation与静态启动图像的外观相匹配。)

这种行为在iOS 8的LaunchScreen.xibfunction中没有改变 – 它只是在应用程序实际运行之前才出现,所以它仍然是一个静态的图像。 LaunchScreen.xibfunction让您能够自适应地为多种不同的设备尺寸和样式生成启动图像,而无需在应用中分别devise,渲染和发送不同的图像,以适合每种尺寸/方向等。

如果您的应用程序在获得控制权之前没有准备好使用,请考虑您当时正在执行的“加载”任务是否需要立即完成,或者是否可以让用户开始执行某些操作立即在后台线程上做更多的设置工作,或者将其推迟到实际需要的时候。

我不经常使用启animation面,但是当我这样做时,我希望它们像书一样打开。

事实上,我并不是很喜欢启动屏幕,甚至苹果公司build议使用一个default.png来显示应用程序的控件(没有文本):

显示与应用程序的第一个屏幕非常相似的启动图像。 这种做法会减less您的应用程序的启动时间。

避免显示关于窗口或启animation面。 一般来说,尽量避免提供任何types的启动体验,以防止人们立即使用您的应用程序。

来自HIG指南

然而,有些人喜欢他们,特别是一个应用程序有一个很好的实现启animation面 – path2.0。 当您打开“path”(Path)时,您会看到自己的徽标上印着苹果亚麻质地的红色版本,animation像一本书(或期刊,因为这就是Path认为自己是这样的)发行。

你可以在这里获得这个项目的源代码: https : //github.com/jaysonlane/OpenBook

在我们开始之前,让我以一个免责声明来做序:我对cocoa的animation非常新颖,所以对我很感兴趣。 如果您发现不必要或效率低下的代码,请留下评论,我将整理它。

如果您还没有看到animation,请跳过应用程序商店,拿起一个副本,看看我们要完成什么。 我创build了一个默认的PNG,我们可以使用巧妙的math(就像打开的math书一样,对吧?)你可以在这里下载(视网膜)和这里。

要开始,让我解释一下我们将要做的背后的“诡计”:我们将使用正常的默认飞溅系统来显示我们的default.png。 在App Delegate中,一旦应用程序启动完成,我们将在同一个default.png的视图之上创build一个UIImageView。 然后,我们将animation该UIImageView,旋转打开显示我们的观点。

所以我们走吧:

创build一个新的项目,我创build一个使用单个视图模板,但这将适用于任何。 继续并将default.png和default@2x.png设置为提供的图像。 您可以通过单击左侧导航窗格中的项目来完成此操作,单击目标并向下滚动以启动图像:

打开你的AppDelegate.m并将下面的代码添加到你的应用程序didFinishLaunching或application didFinishLaunchingWithOptions函数中:

//1. add the image to the front of the view... UIImageView *splashImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [splashImage setImage: [UIImage imageNamed:@"Default"]]; [self.window addSubview:splashImage]; [self.window bringSubviewToFront:splashImage]; //2. set an anchor point on the image view so it opens from the left splashImage.layer.anchorPoint = CGPointMake(0, 0.5); //reset the image view frame splashImage.frame = CGRectMake(0, 0, 320, 480); //3. animate the open [UIView animateWithDuration:1.0 delay:0.6 options:(UIViewAnimationCurveEaseOut) animations:^{ splashImage.layer.transform = CATransform3DRotate(CATransform3DIdentity, -M_PI_2, 0, 1, 0); } completion:^(BOOL finished){ //remove that imageview from the view [splashImage removeFromSuperview]; }]; 

这里发生了三件事

1)我们创build一个新的UIImageView,并将其添加到视图的顶部2)我们在图像的左侧设置一个锚点,使其从左侧打开,然后将帧重置为视图的全部大小3 )我们为UIImageView设置animation,并在完成时将其从视图中移除

就是这样,就这么简单。

来源: http : //jaysonlane.net/tech-blog/2012/03/path-2-0-style-animated-splash-screen-default-png/

您可以创buildLaunchScreen.xib,然后创build一个完美的副本,您可以将代码放在上面,并具有LaunchScreenAnimator类,您可以调用委托forms,并有一个委托来告诉您animation何时结束

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; LaunchScreenAnimator *la=[LaunchScreenAnimator createWithDelegate:self]; self.window.rootViewController=la; [self.window makeKeyAndVisible]; [la startAnimation]; return YES; } -(void) splashAnimationFinished:(LaunchScreenAnimator*)view { [self startWithDashboardWindow]; // replace the current rootViewController with whatever you want }