2013-02-21 37 views
0

我通過在iPhone應用程序上拖動手指繪製多種顏色,但是當我最小化應用程序然後最大化時,我將失去所有繪圖,因爲它調用繪圖方法。我不知道從何處調用此方法,但我無法看到此問題的任何解決方案。主要是當我在設備上運行許多應用程序時發生。我認爲iOS會刪除緩衝區中的所有數據,以防止iPhone的低性能。這個問題的解決方案是什麼?爲什麼它失去了繪圖?請幫忙!我沒有找到任何解決這個問題的方法。當應用程序在前臺丟失所有繪圖

回答

0

該框架將根據需要調用drawRect,它是您調用時繪製視圖的責任。無論何時調用drawRect,您都應該存儲用戶操作所需的任何狀態以重繪視圖。

1

因爲您的視圖在後臺卸載,並且當您回到前臺時,視圖將被撤消,因此它將重新繪製。

當你進入後臺時,如果設備內存不足,Apple會卸載後臺應用程序的視圖(甚至關閉你的應用程序),以擴大當前正在運行的應用程序的內存。您的視圖會被卸載,當您回到前臺時,視圖將通過「數據」進行調整,因此請確保不要在視圖中保留「數據」。

也許在iOS6的,蘋果修改機制

1

我失去了我所有的圖紙,因爲它調用的drawRect方法。

從你的問題,它好像你是不是在你的drawRect方法繪製, 的drawRect方法被調用每次你的觀點是更新/加載時間。所以當你從背景輸入時,調用drawrect方法。如果您沒有使用正確的方法處理繪圖機制,則會丟失所有數據。

Apple States that

此方法的默認實現不執行任何操作。使用原生繪圖技術(例如Core Graphics和UIKit) 繪製其視圖內容的子類 應覆蓋此方法並在其中執行 其繪製代碼。如果您的視圖以其他方式設置其內容,則不需要覆蓋此方法。例如,如果您的視圖僅顯示背景顏色 或您的視圖使用底層 對象直接設置其內容,則不需要 覆蓋此方法。同樣,如果您的視圖 使用OpenGL ES進行繪製,則不應該重寫此方法。

如果你正在處理它的其他方式,那麼你需要處理,你的觀點是在viewWillAppear中繪製在後。

否則可能會有內存原因,因爲如果你得到內存警告,你通常會在初始化數據的地方調用ViewDidLoad。

相關問題