我在IOS5中注意到,当第一次调用SetNeedsDisplayInRect时,它会导致设备刷新全屏。这与以前的IOS版本不同。
在我正在开发的应用程序中,我有一个需要绘制的对象数组(大部分是矩形,具有不同的行大小)。如果我只想重绘几个矩形,我会将对象添加到一个“更新”-Array中,并调用SetNeedsDisplayInRect来使矩形的区域失效。
在我的drawRect-方法中,我确定如下所示,要么绘制完整的对象数组,要么只绘制“更新-数组”:
BOOL boolDrawFullScreen = CGRectEqualToRect(rect, self.frame);
if (boolDrawFullScreen)
//draw all the objects
else
//draw just the objects within the update-array在我用IOS5测试它之前,它一直工作得很好。实际上,它仍然有效,但不是第一次调用SetNeedsDisplayInRect:-> CGRectEqualToRect返回的总是肯定的。
那是为什么?我做错什么了?
如有任何建议,敬请见谅!谢谢
汤姆
发布于 2012-03-09 01:13:40
这种行为记录在这里中的QA1708中,提高了iOS上的图像绘制性能。
请注意,由于iPhone/iPod /iPad更新屏幕的方式,如果您调用-setNeedsDisplayInRect:或-setNeedsDisplay:,整个视图将被重新绘制。
因此,如果您有一个应该独立于屏幕其余部分更新的屏幕子视图,那么您似乎想要使用一个子视图。
https://stackoverflow.com/questions/8472500
复制相似问题