2011-04-04 39 views
15

我已將目前的目標升級到iPad並製作了通用應用程序,如果有問題的答案,我的iphone應用程序調整到ipad的時間將顯着減少。在Xcode中爲iPhone指定圖像爲@iX 2 iPhone 4

到這個時候大家都知道,如果你有一個名爲「football.png」的形象,並希望爲視網膜顯示的支持,你應該加倍圖像的大小,並將其命名爲「[email protected]」。

我的問題是,如果有什麼東西像iPad * [email protected]_which_is_another_size.png*?

如果沒有辦法做到這一點,我必須將每個圖像連接到IBOutlet並以編程方式設置框架嗎?

回答

27

在iOS系統4.0和更高版本,可以 爲 可用只能在特定類型的 標記各個資源文件設備 要將資源文件與 特定設備相關聯,請將自定義 修飾符字符串添加到其文件名。該 列入此修改字符串 的產生與文件名以下 格式:

<basename><device>.<filename_extension> 

要加載iPad的特定資源,你應該使用~ipad。例如:創建名爲AwesomeImage~ipad.png的圖像,並加載[UIImage imageNamed:@"AwesomeImage.png"],就像您對視網膜顯示圖像所做的一樣。

欲瞭解更多信息:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/Introduction/Introduction.html 在「iOS支持設備特定的資源」部分。

+0

一個很好的答案,雖然部署目標設置爲3.0,所以我不能使用此解決方案。 – 2011-04-04 18:24:44

+0

不適用於IB和LaunchScreen.xib – BergP 2015-07-14 08:48:47

+0

AppleTV(tvOS)是否有?我找不到任何線索...... – Scorpio 2016-06-08 14:17:11

2

我不認爲有一種方法可以讓操作系統自動爲您選取,就像Retina顯示屏一樣。但是,你可以創建一個方便的方法來回報您的文件名,爲你喜歡的:

-(NSString*) myImageFilename:(NSString*)baseName withExtension:(NSString*)ext { 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    return [NSString stringWithFormat:"%@@iPadSize.%@"]; 
} else { 
    return [NSString stringWithFormat:"%@.%@"]; 
} 

} 
+0

謝謝你的回答,這個替代解決方案意味着我必須將每個圖像連接到我的頭文件中的IBOutlet。就像我在Eimanas的回答中所評論的那樣,我創建了一個只創建MainWindow-iPad.xib的通用應用程序。但是我正在考慮在將當前目標升級到iPad時使用其他方法。這聽起來像是最合適的解決方案嗎? – 2011-04-04 18:29:18