当应用程序进入前台时丢失所有绘图

时间:2013-02-21 03:24:50

标签: iphone ios drawing drawrect

我通过在iPhone应用程序上拖动手指来绘制多种颜色,但是当我最小化应用程序然后最大化时,我正在丢失所有绘图,因为它称为 drawrect 方法。我不知道这个方法被调用的地方,但是我无法看到这个问题的任何解决方案。主要是当我在设备上运行许多应用程序时。我认为iOS会删除缓冲区中的所有数据,以防止iPhone性能下降。这个问题的解决方案是什么?为什么失去了绘画?请帮忙!我没有找到解决这个问题的方法。

3 个答案:

答案 0 :(得分:1)

因为您的视图在后台卸载,并且当您返回前台时,视图将会重新开始,因此它将重绘。

当您输入背景时,如果设备内存不足,Apple将卸载后台应用程序的视图(甚至关闭您的应用程序),以扩大当前正在运行的应用程序的内存。您的视图已卸载,当您返回前台时,视图将通过“数据”进行恢复,因此请确保不要在视图中保留“数据”。

也许在IOS6中,Apple修改机制

答案 1 :(得分:1)

  

我正在丢失所有绘图,因为它称为 drawrect 方法。

从您的问题中,您好像没有使用drawRect方法绘图, 每次更新/加载视图时都会调用drawrect方法。所以当你从背景中输入时,会调用drawrect方法。如果您没有使用drawrect方法处理绘图机制,则会丢失所有数据。

Apple States that

  

此方法的默认实现不执行任何操作。子类   使用原生绘图技术(如Core Graphics和UIKit)   绘制视图的内容应该覆盖此方法并实现   他们的绘图代码。如果,您不需要覆盖此方法   您的视图以其他方式设置其内容。例如,您不需要   如果您的视图只显示背景颜色,则覆盖此方法   或者如果您的视图使用底层图层直接设置其内容   宾语。同样,如果您的视图不应该覆盖此方法   使用OpenGL ES进行绘图。

如果您正在以其他方式处理它,那么在viewwillAppear中绘制视图后,您需要处理它。

否则可能存在内存原因,因为如果您收到内存警告,则会调用ViewDidLoad,通常会初始化数据。

答案 2 :(得分:0)

框架将根据需要调用drawRect,在调用视图时绘制视图是您的责任。您应该在用户操作中存储所需的任何状态,以便在调用drawRect时重绘视图。