2012-10-25 112 views
6

我在viewController.m寫的後臺代碼:的Xcode 4.5背景圖片iPhone 4,4S,5

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]; 

和我有不同的圖片的正確名稱:

image.png for non-retina display (320x480) 

[email protected] for retina display (640x960) 

[email protected] for iPhone 5 (640x1136) 

但是當我在模擬器中運行它時,它不會爲iPhone 5屏幕使用[email protected],它只會將圖像@ 2x用於4s屏幕並將其縮放以適合屏幕......我不知道是否存在任何編碼使用圖像 - 568h @ 2x的iPhone 5屏幕?

進出口使用的Xcode 4.5

+0

請勿濫用標籤。 – 2012-10-25 14:05:24

+0

你正在使用哪種版本的Xcoe? –

+0

原始問題:http://stackoverflow.com/questions/13055007/xcode-4-5-different-iphone-backgroud-on-iphone-4s-and-5不是重新創建問題,而是考慮在原始文檔中提供更多信息一,獲得一點名譽並開始賞金。 –

回答

13

iPhone 5視網膜,就像iPhone 4和4S一樣,所有這些設備都會自動使用@ 2x圖像。它只是iPhone 5的名爲「-568h @ 2x」的啓動畫面。您需要編寫一些代碼才能使用不同的圖像,如下所示:

NSString *filename = @"image.png"; 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
if (screenRect.size.height == 568.0f) 
    filename = [filename stringByReplacingOccurrencesOfString:@".png" withString:@"-568h.png"]; 

imageView.image = [UIImage imageNamed:filename];
+0

這裏是「imageView」@synthesize?要麼..? – Peter

+1

查看此示例項目:https://www.dropbox.com/s/gcc081dy0frs20z/RetinaImageTest.zip。如果你在不同的模擬器設備上運行它,你會看到三個不同的(非常難看的)圖像:)它們當然應該是不同的分辨率,但它是一個概念證明。 – TheQ

+0

非常感謝!你真的解決了我的問題! :) – Peter

2

我相信這是不正確的假設,你可以將[email protected]所有圖像文件。我認爲它只有適用於[email protected]。這是iOS在4英寸顯示設備上啓動應用程序時所尋找的文件,以及在SDK中啓用4「顯示支持的」標誌「。例如,一旦你包含這個特定的文件,你的表格視圖將填滿屏幕。

我還沒有看過任何建議,你可以簡單地提供任何圖像與[email protected]文件名組件,並讓它自動使用。您必須根據屏幕尺寸自行設定,例如[UIScreen mainScreen].bounds.size.height

3

如果您嘗試使用[UIImage imageNamed:@"image.png"]並且希望[email protected]將自動從iPhone 5的軟件包中選取,它將無法工作。 自動採摘僅適用於iPhone 4和4S。

只有命名爲[email protected]默認的圖像會自動在iPhone 5

被欽點爲正常圖像,如果你有單獨的圖像爲iPhone 5,嘗試使用此代碼

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
if (screenBounds.size.height == 568) { 
    // code for 4-inch screen 
} else { 
    // code for 3.5-inch screen 
}