2012-09-28 148 views
0

我已將[email protected]啓動圖像添加到我的應用程序。該應用程序需要在「真實」啓動圖像之後顯示第二個啓動圖像。由於UIImage的imageNamed:方法不會自動加載高的圖像,它會自動加載視網膜圖像的方式,我已經添加了一些代碼來檢測屏幕尺寸和顯示正確的圖像:無法在iphone5上顯示640x1136圖像

-(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:@"[email protected]"];  
    } 
    [imgv setImage:img]; 
} 

的ImageView的佔用NIB中的整個屏幕命名爲MainWindow,並且我選擇了名爲「Full Screen At Launch」的複選框。但是,圖像永遠不會佔用整個屏幕。 (儘管發佈圖像的確如此)。第二個圖像是字母框,就像它是一個較小的圖像一樣,而且我從未包含過高的啓動圖像。

無論如何要以編程方式在4英寸iphone5上顯示全屏圖像?爲什麼我的形象總是調整大小?

+1

我不知道它是否會有所幫助,但是當您檢查身高時 - 使用480.0f和568.0f而不是整數值。也看到這個鏈接 - 這是我沒有任何問題使用:http://odoruinu.net/blog/2012/09/26/automatically-loading-iphone-5-sized-images-where-required/ –

+0

請添加斷點來檢查你的代碼是否被執行。 – tia

+0

凱恩的頭可能撞在了頭上;浮點精度可能是爲你做的。您是否嘗試添加日誌或斷點以查看您的代碼遵循哪個路徑? – Tommy

回答

1

我在主視圖控制器上測試了這個。此外,在目標>摘要>狀態欄>可見性檢查「在應用程序啓動過程中隱藏」。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIImageView *iv = [[UIImageView alloc] initWithFrame:self.view.bounds]; 
    iv.image = [UIImage imageNamed:@"[email protected]"]; 
    [self.view addSubview:iv]; 
} 
+0

不知道狀態欄選項。它仍然不正確地擴展,所以我可能還有其他錯誤。 – nont

+0

感謝您的支持!這個祕密竟然是addSubview。只是在MainWindow中顯示UIImage將永遠不會正確縮放。 – nont

4

[UIImage imageNamed:]將負責爲您添加@2x。所以,你應該只指定

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

它也沒用來測試一個4" 畫面和視網膜標準(規模= 2)。有一個4" 所有設備屏幕(568px高)是Retina顯示屏,所以你可以假設,如果高度== 568,用戶的iPhone 5:

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

更換

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

,你是好。

+1

這並不適合我。我同意它*應該*。 – nont

+1

謝謝你的工作。我有一個問題,我在圖像名稱的末尾添加了@ 2x,並且最終放大了2倍 – kevinl