2010-12-19 166 views
7

因此,當我從設備上運行應用程序時,圖片顯示出來,一切都很好。但是,當我移動到設備時,我在38張沒有出現的照片中運行了10張。我拉從sqlite數據庫的圖像的名稱,我已經檢查,名稱是正確的,案件和一切。我檢查了捆綁包,圖像正確的在那裏。在模擬器中顯示但不在iPhone設備上顯示的圖像

記憶在這裏起作用嗎?我不確定還有什麼可能導致這種情況發生?

謝謝!

解決方案: 這些文件以某種方式未正確保存,甚至無法打開說的Photoshop或繪畫。因此,文件無法打開,他們沒有顯示出來......感謝大家的幫助!

回答

6

該模擬器接受更廣泛的圖像格式。有時你有一個設備無法顯示的特定文件類型。仔細檢查10個文件,尋找與其他文件有所不同的文件。

2

是的,內存絕對起到這個作用。檢查你的UIImage創建調用,並確保它們不返回空。此外,請檢查您是否在控制檯窗口中收到內存警告。

43

首先要檢查的是你用來引用資源的字符串。 iPhone區分大小寫,但模擬器不是。

哎呀,剛纔看到你檢查了這個案子。然後更好地記錄所有的UIImage創建調用!

+1

有洞察力。 12. – ratsimihah 2012-08-01 23:23:29

+2

這幫了我。模擬器本身似乎對UIImage的imageNamed部分不區分大小寫,但設備對此非常嚴格。 – Joseph 2012-09-18 19:44:18

+0

這也幫助了我。 – Bobby 2016-03-13 13:01:31

1

通常,如果內存大小是罪魁禍首,那麼您的應用程序會在設備上出現內存錯誤時崩潰。但是,它看起來像圖像不顯示。

可能出錯的另一件事是圖像的大小。 iPhone上的UIViews只能具有比GPU支持的最大紋理尺寸更小的尺寸。蘋果聲明這是1024 x 1024,但我發現它甚至在原始型號iPhone上也更像2048 x 2048。您可能正在爲某些圖像創建一個視圖,這些圖像在一個維度上超過了此大小,但是您的Mac在其GPU上具有更大的最大紋理大小,因此它在模擬器中顯示得很好。

+0

只是一個關於圖像大小的評論,雙倍大小是由於新的iPhone 4。您現在可以使圖像的分辨率增加一倍。我相信這很簡單,因爲必須將圖像的原始尺寸和原始名稱一起圖像化,第二個圖像名稱爲「@ x2」或「@ 2」,尺寸/分辨率是其兩倍。 – Matt 2010-12-20 17:55:33

+0

@Matt - 不,最大紋理尺寸的差異不是由於iPhone 4引起的,而是它所使用的GPU的固有限制。自iPhone iPhone 2.0以來,我已經能夠使用2048 x 2048圖層和紋理,因此與新的Retina顯示功能無關。這只是蘋果公司文檔與實際硬件不同的一種情況,這可能只是他們在未來GPU規格發生變化時保守。 – 2010-12-20 18:03:09

+0

PowerVR SGX的最高分辨率爲2048關於圖像:我們發現如果圖像太大或內存不足,我們的應用程序不會崩潰。 ios會丟棄其他未顯示的圖像,然後當你回到它們時,它們只是在那裏出現。控制檯顯示內存警告。 – twerdster 2010-12-22 22:46:17

相關問題