2013-10-29 78 views
1

自從我升級我的設備iOS7我得到很多的警告的UIImage導致我的應用程序崩潰:收到內存警告

2013-10-29 15:20:16.592 App Name[3820:60b] Received memory warning. 
2013-10-29 15:20:16.695 App Name[3820:60b] Received memory warning. 
2013-10-29 15:20:22.711 App Name[3820:60b] Received memory warning. 

然後我的應用程序崩潰,

Terminated due to Memory Pressure

現在看來似乎是背景圖片導致錯誤:

- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    //This will cause problems if I uncomment 
    //self.view.backgroundColor = [UIColor colorWithPatternImage: 
    //       [UIImage imageNamed:@"background.png"]]; 
    } 

奇怪的部分是它不會發生在模擬r,只在設備上。

+0

圖像有多大?這是特定於您升級到iOS 7嗎? – Wain

+0

@爲什麼我用高分辨率做了一個新的背景,所以它也可以用在我的iPad應用程序中。 – meda

+0

所以你在iPhone上加載@ 2x iPad背景? – Wain

回答

0

在較小/較舊的設備上載入較大的圖像不會很順利。您應該爲您的應用程序提供的設備/分辨率命名圖像,並在運行時加載適當的圖像。 iOS會照顧你的分辨率(如果你遵循命名標準),但對於一般圖像,你需要自己照顧平臺部分。爲此,請使用[[UIDevice currentDevice] userInterfaceIdiom][UIScreen mainScreen].bounds的組合。

例如(在沒有iPhone的屏幕大小區分最基本的層面上):

background_iPhone.png 
[email protected] 
background_iPad.png 
[email protected] 

另外,如果你可以用瓦片爲背景的應用程序,做到這一點。這是指定圖像的最有效方式,SDK將爲您鋪平道路。

+0

好吧,這是有道理的,但我應該如何命名他們,你可以添加一個例子,我也不明白瓷磚/背景的建議,你介意添加代碼示例? – meda

+0

沒有必要的代碼 - 你正在使用'colorWithPatternImage'。 – Wain

+0

如果您使用的是全尺寸圖像,則應該在其他視圖背後添加圖像視圖,而不是使用圖案顏色。 – Wain

相關問題