我使用的是Xcode5的Asset Catalog,我想使用我的LaunchImage作为主视图的背景图像(这是一种非常常见的做法,可以让从“加载”到“加载”的转换看起来很流畅)。
我希望使用资产目录中的相同条目来节省空间,而不必在两个不同的映像集中复制映像。
但是,调用:
UIImage *image = [UIImage imageNamed:@"LaunchImage"]; //returns nil发布于 2013-11-18 18:11:27
这是(几乎)完整的LaunchImage列表(不包括没有状态栏的iPad图像):
发布于 2015-01-06 19:43:29
- (NSString *)splashImageNameForOrientation:(UIInterfaceOrientation)orientation {
CGSize viewSize = self.view.bounds.size;
NSString* viewOrientation = @"Portrait";
if (UIDeviceOrientationIsLandscape(orientation)) {
viewSize = CGSizeMake(viewSize.height, viewSize.width);
viewOrientation = @"Landscape";
}
NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
for (NSDictionary* dict in imagesDict) {
CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
return dict[@"UILaunchImageName"];
}
return nil;
}发布于 2013-10-10 00:05:15
LaunchImages是特殊的,实际上并不是设备上的资产目录。如果您使用iFunBox/iExplorer/etc (或者在模拟器上,或者在build目录中)查看,您可以看到最终的名称,然后编写代码来使用它们-例如。对于仅支持iOS7的iPhone项目,这将设置正确的启动图像:
NSString *launchImage;
if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) &&
([UIScreen mainScreen].bounds.size.height > 480.0f)) {
launchImage = @"LaunchImage-700-568h";
} else {
launchImage = @"LaunchImage-700";
}
[self.launchImageView setImage:[UIImage imageNamed:launchImage]];我把这个放到了viewDidLoad中。
这真的不是很理想,如果苹果能给我们一个很好的API来做这件事就太好了。
https://stackoverflow.com/questions/19107543
复制相似问题