2013-02-21 64 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。

相关问题