2011-02-23 32 views
12

我知道這裏有一些討論,但我找不到好的答案?在通用應用程序中使用@ 2x視網膜圖像爲ipad?蘋果是否喜歡原生應用?

我的問題是 -

  1. 我知道 -

    [UIImage imageNamed:@"blabla"] 
    

會自動搜索iPhone上的正確的圖像顯示(視網膜與否)。

我有一個通用應用程序,我希望在iPad上使用@ 2x版本,所以我不必加載其他版本的圖像(我有數百個小圖像)。

是否有可能?

  • 我在某些地方看到人們寫道,蘋果不喜歡通用應用程序,因爲它傾向於爲iPhone和iPad構建分離的應用程序?即使我爲每個用戶創建不同的用戶界面,這種方式是否正確

感謝

SHANI

+0

爲什麼蘋果更喜歡不同的iPad和iPhone應用?作爲用戶,通用應用程序對我來說更吸引人。 – 2011-02-23 09:27:21

+0

這就是爲什麼我認爲當決定去通用應用程序,但我在一些地方看到它,只是想確保 – shannoga 2011-02-23 09:30:05

回答

17

沒有複製的iPad的更高的水庫iPhone視網膜圖像沒有很好的內置方式。你可以寫一個使用用戶界面成語宏來確定您的平臺自己的UIImage分機或子類,然後自動「@ 2x」不追加到圖像名稱:

+ (UIImage *) imageNamedSmart:(NSString *)name 
{ 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     return [UIImage imageNamed:[NSString stringWithFormat:@"%@@2x.png", name]]; 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]]; 
} 

,你會這樣稱呼它:

[UIImage imageNamedSmart:@"myImage"] 
+0

嘿已經嘗試過,但它沒有奏效。 – shannoga 2011-02-23 10:32:30

+0

哪部分沒有工作? – Bogatyr 2011-02-23 11:40:58

+0

嘿,我的錯誤。事實是,那是我第一次嘗試。但我很愚蠢,試圖在一個觀點,我仍然沒有@ 2x的圖像。謝謝任何方式:) – shannoga 2011-02-24 05:41:57

0

也許你可以複製所有圖像資源[email protected]到圖像〜ipad.png。 請注意「〜ipad.png」的情況。 但是你必須用Cap來手動管理拉伸圖像(stretchableImageWithLeftCapWidth:topCapHeight :)。

3

我通過檢查視網膜圖像是否存在改進了Bogatyr的回答。可能不是非常必要,但我發現測試時很有用,所以我可以創建一個圖像文件。

+ (UIImage *) imageNamedSmart:(NSString *)name { 
    NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease]; 
    NSString *retinaFileName = [NSString stringWithFormat:@"%@@2x", name]; 

    NSString *filePath = [[NSBundle mainBundle] pathForResource:retinaFileName ofType:@"png"]; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [fileManager fileExistsAtPath:filePath]) { 
     return [UIImage imageNamed:[retinaFileName stringByAppendingString:@".png"]]; 
    } 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]]; 
} 
67

如果你加載一個名爲「圖片」搜索路徑很可能是一樣的,他們一直是圖像:

iPhone:

  • 1)圖像@ 2X〜iphone.png(僅視網膜)
  • 2)[email protected](視網膜只)
  • 3)圖像〜iphone.png
  • 4)image.png

ipad公司:

  • 1)圖像2×@〜ipad的。PNG(視網膜只)
  • 2)[email protected](僅視網膜)
  • 3)圖像〜ipad.png
  • 4)image.png
+0

如果這可行,這應該是選定的答案。這太棒了。當然,你可能想要指出,這隻適用於4.0+。 http://stackoverflow.com/a/5535913/362730 – Tim 2012-11-18 18:48:04

+0

另外 - 這意味着如果你有普通的iPhone尺寸,Retina iPhone尺寸和普通的iPad圖形,那麼視網膜iPad會喜歡在普通iPad圖形之前加載Retina iPhone圖形? – Tim 2012-11-18 19:01:37

+0

iPhone中的區別是什麼:1)[email protected]~iphone.png(僅限視網膜)2)[email protected](僅限視網膜) – hariszaman 2015-07-14 09:36:13

相關問題