我在IOS5中第一次调用SetNeedsDisplayInRect时注意到它会导致设备刷新全屏。 这与以前的IOS版本不同。
在我正在开发的应用程序中,我有一个需要绘制的对象数组(大多数是矩形,具有不同的行大小)。 如果我只想重绘几个矩形,我将对象添加到“更新”-Array并调用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。
为什么?我做错了什么?
任何建议都非常感谢!! 感谢
汤姆
答案 0 :(得分:2)
QA1708中记录了此行为here 提高iOS上的图像绘制性能
请注意,由于iPhone / iPod touch / iPad更新其屏幕的方式,如果您调用-setNeedsDisplayInRect:或-setNeedsDisplay:将重绘整个视图。
因此,如果您的屏幕子矩形应该独立于屏幕的其余部分进行更新,那么您似乎希望使用子视图。