app的LaunchImage(启动图像)管理在iOS一开始其实还是比较简单的,尤其是Xcode引入xcassets之后,完全是傻瓜式操作。但是有时候我们还是需要在LaunchImage上做文章。LaunchImage会在APP初始化后立即消失,显示APP界面,但有时候我们并不希望它消失的那么快(比如有人想要一个过渡效果,有人想要等待一些设置或者数据toload.Disappear)这个也很简单,只要我们把LaunchImage再显示一遍,设置到最上面就OK了,比如下面这个,但是我们配置了那么多适合不同屏幕分辨率的LaunchImage。如何获取适合当前屏幕分辨率的LaunchImage?普通的方法是将所有的LaunchImage添加到工程中,并根据屏幕分辨率命名,如(640_960.png640_1136.png...)然后用代码拼接出对应的文件名,并在程序,但是这种方法比较原始,如果苹果有一些其他分辨率的设备或者启动画面发生变化,就需要手动修改。项目配置不是很好,需要额外占用资源(APP容量又增加了)。CherpakEvgenyonstackflowshared更好的方法是直接读取NSBundle中的设置来获取当前适用的LaunchImage。我以上图为例,写了一个demo代码NSArray*imagesDict=[[[NSBundlemainBundle]infoDictionary]valueForKey:@"UILaunchImages"];for(NSDictionary*dictinimagesDict){CGSizeimageSize=CGSizeFromString(dict[@"UILaunchImageSize"]);if(CGSizeEqualToSize(imageSize,viewSize)&&[viewOrientationisEqualToString:dict[@"UILaunchImageOrientation"]]){launchImage=dict[@"UILaunchImageName"];}}UIImageView*launchView=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:launchImage]];launchView.frame=self.window.bounds;launchView.contentMode=UIViewContentModeScaleAspectFill;[self.windowaddSubview:launchView];[UIViewanimateWithDuration:2.0fdelay:0.0foptions:UIViewAnimationOptionBeginFromCurrentStateanimations:^{launchView.alpha=0.0f;launchView.layer.transform=CATransform3DScale(CATransform3DIdentity,1.2,1.2,1);}完成:^(BOOLfinished){[launchViewremoveFromSuperview];}];这样就能轻松搞定LaunchImage了~
