我正在编写一个支持轮换的通用应用。当应用程序启动时,它需要从互联网上下载一些数据,所以我推送一个带有活动指示器的UIViewController,因为它不可能有动画启动图像或添加标签或对象。
我希望“加载”VC具有与启动相同的bg图像,但是,因为它是一个通用应用程序,我无法设置简单的[UIImage imageNamed:@“Default.png”],因为它可以运行在iPhone或iPad上,如果iPad可以纵向或横向启动(iPhone应用程序始终以纵向方式启动)。
问题是:有一种方法可以知道哪个Default.png已被用作启动图像?它可以是
如果现在有办法,我会检查currentDevice和orientation并手动设置imageNamed。
谢谢, 最大
答案 0 :(得分:1)
纵向和横向没有后缀。您必须使用[[UIDevice currentDevice] orientation]
手动检查方向。
要显示iPad和iPhone / iPod Touch的不同图像,您可以将~ipad
添加到iPad图像的末尾,将~iphone
添加到iPhone / iPod Touch图像的末尾。例如:
默认~iphone.png将加载到iPhone / iPod Touch上,默认~ipo.png将在iPad上加载:
[UIImage imageNamed:@"Default.png"];
但iPhone 5也没有说明。因此,您必须检查[[UIScreen mainScreen] bounds].size.height
并再次手动加载UIImage
。
已满(未经测试)示例:
UIImage *image;
if ([UIScreen mainScreen].bounds.size.height == 568.0)
{
if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
{
image = [UIImage imageNamed:@"Default-568h-Landscape"];
}
else
{
image = [UIImage imageNamed:@"Default-568h-Portrait"];
}
}
else
{
if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
{
image = [UIImage imageNamed:@"Default-Landscape"];
}
else
{
image = [UIImage imageNamed:@"Default-Portrait"];
}
}
// check suggested by Guy Kogus
if (image == nil) image = [UIImage imageNamed:@"Default"];
在评论中回答你的问题:
不,您无法查询运行时使用的启动图像。
答案 1 :(得分:0)
自动选择@ 2x后缀,因此您无需担心。您需要执行一些检查:
- (NSString *)defaultImage
{
NSString *imageName = nil;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
if ([UIScreen mainScreen].bounds.size.height == 568.0)
{
imageName = @"Default-568h";
}
else
{
imageName = @"Default";
}
}
else // ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation))
{
imageName = @"Default-Landscape";
}
else // if (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation))
{
imageName = @"Default-Portrait";
}
}
return [UIImage imageNamed:imageName];
}