我在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 :,则会重新绘制整个视图。
因此,如果您的子屏幕应该独立于屏幕的其余部分进行更新,则似乎需要使用子视图。