最新在折腾iOS6 以及 iOS7界面网络的统一适配。
发现iOS7+之后的版本app在启动之后会有一个界面的splash效果(渐变)。
iOS6以及之前的版本则无。
无奈之下自己实现了一个。
简单描述下思路:
1. iAPP在启动时,会自己加载Default图片。
2. 在Default之后主动添加一个和Default一样的图片并显示。
3. 在应用初始化(可有可无)完成之后,将主动添加的Default移除。
[self.window makeKeyAndVisible]; 这句是以UIWindow来实现这个Splash的启发点。
makeKeyAndVisible字面理解:将当前的window设置成关键window. 就引申出一个app允许多个window并且keyWindow是可以修改或者设置的。
以此为出发点进行测试与验证。
结果可以接受。
以下是简单的示例代码。
1. 初始化Splash
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
/**
* show the status bar.
*/
[application setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
/**
* set the key window.
*/
[self.window makeKeyAndVisible];
self.splashController = [SplashController open];
[self performSelector:@selector(splash)
withObject:nil
afterDelay:2.0];
return YES;
}
2. 执行splash
- (void)splash
{
[self.splashController splash:1.0
complete:^
{
NSLog(@"splash complete");
}];
return;
}
补充:
由于apple现在的尺寸越来越多,所以之前加载默认Default.png的方法在iPhone6之前的版本是可以使用的,但在这之后的全名规则不知道如何确定,
所以就使用了一个傻瓜的方法根据屏幕尺寸来对图片进行命名。
szSplash = [NSString stringWithFormat:@"%dx%d", (int)stSZ.width, (int)stSZ.height];
方法比较傻,这是在尝试Images.xcassets失败之后采用的傻瓜方法。
测试项目地址:
https://github.com/iidioter/Splash/
关于有更好的对"Default"进行管理的方法可以直接反馈。
欢迎大家加群讨论:
110560798
备注:plist文件添加