当咱们打开一款应用程序的时候,首先映入眼帘的每每并非程序的主界面,而是通过精心设计的欢迎界面,这个界面一般会停留几秒钟,而后消失。看似很日常的一个小小的欢迎界面,其实还大有讲究。web
1、为何会出现欢迎界面? |
程序在启动的过程当中须要消耗一些时间,那么在加载出现主界面以前,会出现短暂的黑屏,这实在是很糟糕的一件事情,会给用户一个很是很差的体验。为了缓解用户等待过程当中心理的不适与烦躁,欢迎界面闪亮登场了!app
用欢迎界面来替代黑屏的等待,能够有效的掩盖耗时阻塞的后台操做,还能向用户展现有效的信息,是很是好的一种过渡方案。可是有的程序把欢迎界面作成了广告版,浪费了用户更多的时间,让用户以为厌烦,对程序自己功能也失去了兴趣,这种作法实在是很不明智。iphone
2、欢迎界面的种类 |
欢迎界面种类有不少,大体分为静态和动态两种。动画
静态的欢迎界面一般比较简洁,通常会放置一张很精美的图片,多是一张公司或者产品的宣传图,也多是一张广告图,给我印象最深的是某聊天软件在生日当天打开,欢迎界面居然是一张写着你名字的生日祝福的图片,让人感受很温暖。atom
动态的欢迎界面要更加炫酷精美,样式也更加丰富,有的是联网加载的广告,有的像一本很炫的书,能够滑动翻页,有的是一个小小的游戏,有的是美文配着美妙的音乐,还有的多是一段有趣的动画。spa
3、欢迎界面使用LaunchImage |
针对IOS7,苹果提供了LaunchImage来实现欢迎界面,开发的时候只须要将设计好对应尺寸的图片拖到对应的状态的位置便可。设计
在IOS7,欢迎界面对应的尺寸分别为:code
iphone 竖屏 640*960 640*1136orm
ipad 竖屏 768*1024 1536*2048blog
ipad 横屏 1024*768 2028*1536
IOS8出现以后,苹果推出了LaunchScreen.xib来作欢迎界面,若是还想经过LaunchImage来作欢迎界面,完美适配IOS7和IOS8,应该如何来作呢?
首先,须要把LaunchScreen.xib删掉,不然IOS8时会自动调用它。而后找到Images.xcassets,点击下面的 + 号,选择New Launch Image,而后按照对应的要求放入相应尺寸图片便可,和以前操做彻底同样。
4、欢迎界面使用LaunchScreen.xib |
Xcode6/IOS8新添加了许多功能,好比LaunchScreen.xib、Size Classes等。程序启动的时候,会自动调用LaunchScreen.xib,所以能够在这个xib上添加须要显示的控件,并添加约束,进行显示。
如上图所示,当前欢迎界面包括中间的大标题,下面的公司信息等,和一张图片。由于上面的控件都是在Any w和Any h的状况下添加的约束,因此不管在哪一种尺寸的设备上均可以适配。为了保证更完美的效果,xib中得图片咱们可使用Images.xcassets来设置,这样能够在不一样设备的时候自动选择相应尺寸的图片,达到更好的效果。
上面的LaunchScreen.xib是使用Xcode6建立项目自动生成的,若是不想使用自动生成的,也能够换成其余的xib,可是很遗憾,用于作欢迎界面的xib无法与View Controller连线,所以只能显示静态的事先摆好的界面。换xib能够在下图两个地方进行更换。
5、欢迎界面动态加载广告 |
有许多应用程序在打开的时候,欢迎界面会加载一张连网获取的广告图片或者显示一组动画,这样的效果是如何作到的呢?下面给你们介绍一种简单的实现加载广告的方式。
程序运行起来,欢迎界面以后,会进入AppDelegate,所以咱们能够在application: didFinishLaunchingWithOptions:添加代码完成想要的效果。连网获取图片能够用第三方SDWebImage实现,因此须要先将第三方文件夹导入。由于显示广告的页面是在欢迎界面基础上显示的,所以能够直接利用LaunchScreen.xib中得view,在上面添加一个UIImageView显示图片,而后将其加在window上,并显示在最上层。广告图片显示以后,再将view移除掉,显示程序的主界面。代码以下所示:
#import "AppDelegate.h" #import "UIImageView+WebCache.h" @interface AppDelegate () @property (strong, nonatomic) UIView *lunchView; @end @implementation AppDelegate @synthesize lunchView; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self.window makeKeyAndVisible]; lunchView = [[NSBundle mainBundle ]loadNibNamed:@"LaunchScreen" owner:nil options:nil][0]; lunchView.frame = CGRectMake(0, 0, self.window.screen.bounds.size.width, self.window.screen.bounds.size.height); [self.window addSubview:lunchView]; UIImageView *imageV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 50, 320, 300)]; NSString *str = @"http://www.jerehedu.com/images/temp/logo.gif"; [imageV sd_setImageWithURL:[NSURL URLWithString:str] placeholderImage:[UIImage imageNamed:@"default1.jpg"]]; [lunchView addSubview:imageV]; [self.window bringSubviewToFront:lunchView]; [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(removeLun) userInfo:nil repeats:NO]; return YES; } -(void)removeLun { [lunchView removeFromSuperview]; }