有时候我们需要显示项目的启动图来过渡到某些页面,但是不同屏幕下的启动图尺寸是不一样的,总不能把每一种尺寸的启动图都复制一份添加到Assets.xcassets里面。但是根据启动图的名字直接[UIImage imageNamed:launchImage]又拿不到。有没有什么办法直接拿到当前屏幕对应的LaunchImage呢,答案是有的。
我打印了一下[[NSBundle mainBundle] infoDictionary] 发现了一个叫做UILaunchImages的数组,里面正是我们需要的启动图信息
既然已经找到了启动图的信息,拿到图片就不成问题了
#pragma mark - 获取启动图
+ (UIImage *)getLaunchImage{
CGSize viewSize = [UIScreen mainScreen].bounds.size;
NSString *launchImage = nil;
NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
for (NSDictionary* dict in imagesDict)
{
CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
// 横屏改成 @"Landscape"
if (CGSizeEqualToSize(imageSize, viewSize) && [@"Portrait" isEqualToString:dict[@"UILaunchImageOrientation"]])
{
launchImage = dict[@"UILaunchImageName"];
}
}
return [UIImage imageNamed:launchImage];
}