我在IOS5中第一次调用SetNeedsDisplayInRect时注意到,它使设备刷新全屏。
这与以前的IOS版本不同。

在我正在使用的App中,我有一个需要绘制的对象数组(大多数是矩形,线条大小不同)。
如果只想重绘几个矩形,则将对象添加到“Update”数组中,并调用SetNeedsDisplayInRect来使矩形区域无效。

在我的drawRect-Method中,我确定是绘制对象的完整数组,还是仅绘制“Update-Array”:

BOOL boolDrawFullScreen = CGRectEqualToRect(rect, self.frame);

if (boolDrawFullScreen)
//draw all the objects
else
//draw just the objects within the update-array

直到我使用IOS5对其进行测试之前,它一直运行良好。
实际上,它仍然有效,但是在第一次调用SetNeedsDisplayInRect时不是第一次:-> CGRectEqualToRect总是返回yes。

这是为什么??我究竟做错了什么?

任何建议都受到高度赞赏!
谢谢

汤姆

最佳答案

QA1708中已记录此行为here
改善iOS上的图像绘制性能

请注意,由于iPhone / iPod touch / iPad更新屏幕的方式,如果您调用-setNeedsDisplayInRect:或-setNeedsDisplay :,则会重新绘制整个视图。

因此,如果您的子屏幕应该独立于屏幕的其余部分进行更新,则似乎需要使用子视图。

10-07 21:31