0

我在我的应用中添加了一个 Default-568h@2x.png 启动图像。该应用程序需要在“真实”启动图像之后显示第二个启动图像。因为 UIImage imageNamed: 方法不会像自动加载视网膜图像那样自动加载更高的图像,所以我添加了一些代码来检测屏幕大小并显示正确的图像:

-(void)pickRightImage
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    UIImageView *imgv = [self loadingImage];

    UIImage *img;

    if(result.height == 480)
    {
        img = [UIImage imageNamed:@"loading_screen.png"];
    } else if([UIScreen mainScreen].scale == 2.f && result.height == 568) {
        // iPhone 5
       img = [UIImage imageNamed:@"loading_screen-568h@2x.png"];       
    }
    [imgv setImage:img];
}

imageView 在名为 MainWindow 的 NIB 中占据了整个屏幕,并且我选择了名为“Full Screen At Launch”的复选框但是,图像从不占据整个屏幕。(尽管启动图像确实如此。)第二张图像是字母加框的,就好像它是一个较小的图像一样,我从未包含过高的启动图像。

无论如何以编程方式在 4 英寸 iphone5 上显示全屏图像?为什么我的图像总是调整大小?

4

2 回答 2

4

[UIImage imageNamed:]将负责@2x为您添加。所以你应该指定

img = [UIImage imageNamed:@"loading_screen-568h.png"];

同时测试 4" 屏幕和 Retina 标准(比例 = 2)也是没有用的。所有具有 4" 屏幕(568px 高)的设备都是 Retina 显示器,所以你可以假设如果 height == 568,用户有iPhone 5:更换

if ([UIScreen mainScreen].scale == 2.f && result.height == 568)

if ([UIScreen mainScreen].bounds.size.height == 568)

你很好。

于 2012-09-28T16:30:00.777 回答
1

我在主视图控制器上对此进行了测试。此外,在目标 > 摘要 > 状态栏 > 可见性检查“应用程序启动期间隐藏”。

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIImageView *iv = [[UIImageView alloc] initWithFrame:self.view.bounds];
    iv.image = [UIImage imageNamed:@"Second-default568h@2x.png"];
    [self.view addSubview:iv];
}
于 2012-09-28T16:40:45.360 回答