1、需求介绍
一个正规的手机APP,都会有启动Logo画面,有时候会在启动画面加载一定的广告,例如腾讯新闻、网易新闻;这些APP都会有自己的启动Logo画面。设计一个体检较佳的启动画面往往是开发优秀APP的第一步。
2、启动画面的实现
一个完成的启动画面应分为两部分,第一部分IOS系统启动,这个启动的画面伴随着APP的启动;第二个画面是APP自定义画面,这个画面往往伴随着APP的数据初始化、登录等APP初始化工作。这时候启动画面可以是Logo画面,也可以加载广告图片。下面分别介绍这两部分的实现。
第一阶段:
加载时间:这个阶段是系统在加载应用,这个阶段加载的启动画面默认是1秒,如果想要延长这个阶段的时间,可以采取下面方法:
在AppDelegate.m里加入线程延迟
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[NSThreadsleepForTimeInterval:2];
...........
}
Logo图片的加载:首先需要设置以下选项:
选项设置后,APP就会从资源目录里查找Default.png图片进行加载。针对不同的分辨率,会有不同的图片选择:
iPhone 4 320x480 ------->Default.png
iPhone 4s 640x960 ------->Default@2x.png
iPhone 5/5s 640x1136 -------->Default-568h@2x.png
IPAD对应不同的Iphone手机。
第二阶段:
自定义启动画面一般是在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中实现。
我们工程项目里在这个方法中开始加载自己的画面LogoViewController,在LogoViewController里面,进行了广告的加载,如果没有广告数据,则继续
默认Logo图片的加载。让第一阶段第二阶段看起来只有一张图片。加载广告时,直接显示广告图片,但是再次加载原来的Logo让这两个阶段无缝结合
有点麻烦。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
.........
LogoViewController* wLogVC = [[LogoViewController alloc] initWithMainWindow:self.window];
.........
}
在LogoViewController中,需要根据不同的设备加载不同的图片,目前iPhone手机尺寸主要是iPhone 4/4s和Iphone 5/5s,如果不考虑不同的机型以及Retina屏幕问题,会出现Logo图片“闪调”的现象,这样的Logo加载是良好的用户体验无法容忍的。
代码中根据不同的设备进行判断加载不同的Logo图片;
if(wAdsData != nil)
{
//加载广告图片
......
}
else
{
if (568 == frameHeight)
{
logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h@2x.png"]];
}
if (480 == frameHeight)
{
if (IS_RETINA)
{
logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default@2x.png"]];
} else
{
logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];
}
}
[self addSubview:logoImageView];
}
其中Retina屏幕的判断:
#define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))
然而即使这样,仔细的观察还是隐约能够看到两个阶段之间有略微的闪过。
3、参考资料