2013-10-15 53 views
1

我在Xcode 5中有一個圖像資產目錄和兩個圖像。 enter image description hereXcode圖像資產返回視網膜設備的錯誤圖像

這是文件夾結構是什麼樣子

enter image description here

這是JSON文件的內容:

{ 
    "images" : [ 
    { 
     "idiom" : "ipad", 
     "scale" : "1x", 
     "filename" : "background.png" 
    }, 
    { 
     "idiom" : "ipad", 
     "scale" : "2x", 
     "filename" : "[email protected]" 
    } 
    ], 
    "info" : { 
    "version" : 1, 
    "author" : "xcode" 
    } 
} 

的資產目錄是我擁有的唯一的地方背景和名爲background.png的文件。 現在,每當我做了

[UIImage imageNamed:@"background"]; 

在非iPad的視網膜,我得到了非視網膜版本,並在視網膜上的iPad上,我再次得到了非視網膜版本。 我用我的所有其他資源以及這種技術,它正確加載正確的圖像視網膜/非視網膜到處,除了這一個。

如果我做

[UIImage imageNamed:@"[email protected]"] 

它加載圖像,我看到的是隻檢查的規模和加載相應的圖像唯一的解決辦法,並在這一點上,視網膜版本,但我真的很喜歡這工作。

任何想法?

編輯

下面是一個示例項目的鏈接時,顯示問題 AssetsCatalogWrongImageLoad

編輯2 好像它沒有任何與該資產類別。 [UIImage imageNamed]只是不能與這兩個圖像,即使他們是在自己的...

回答

4

資產目錄沒有任何問題。問題在於你正在測試圖像的大小。

看你的代碼,你有

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background"]]; 
NSLog(@"Image size should be: %@", [[UIScreen mainScreen] scale] == 1 ? @"1136x1024":@"2732x2048"); 
NSLog(@"Image size is:%@", NSStringFromCGSize(imageView.image.size)); 

imageView.image.size返回邏輯大小(以點爲單位,不是像素)從iOS 4的起的圖像。因此,無論是否加載視網膜圖像,您的測試總是以點爲單位返回屏幕大小。如果您想要真正測試正在加載的內容,請爲視網膜和非視網膜圖形使用不同的圖像。

這是你的測試項目的一個修正版本:https://www.dropbox.com/s/ns6ci3b5htkhvi6/AssetsCatalogWrongImageLoad.zip

我在這裏所做的是把文本「@ 2X」視網膜大小的圖像,所以當你的視網膜上運行iPad的你其實可以看到正在使用不同的圖像,而不是錯誤地檢查圖像的大小。

+0

就是這樣!謝謝!我想我在@「background @ 2x」以1的比例返回圖像時感到困惑。 – Andrew

-2

我使用png時看到資產目錄的問題。無論出於什麼原因,它顯示與png相同的問題,移動到JPEG解決它。看起來有些文件擴展名可能令人困惑