2011-12-12 56 views
2

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

在我正在处理的应用程序中我需要绘制一个对象数组(大多数是矩形,具有不同的线条大小)。 如果我想重绘只有几个矩形,我将对象添加到“更新” - 阵列并调用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总是返回yes。

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

任何建议都高度赞赏! 感谢

汤姆

+1

这看起来像是iOS5中的一个错误 - 我也遇到了它。 –

回答

2

此行为QA1708 提高图像iOS上的绘图性能

注意记录here的是,由于方式的iPhone/iPod的触摸/ iPad的更新它的屏幕,如果调用-setNeedsDisplayInRect:或-setNeedsDisplay:,整个视图将被重绘。

因此,如果您有屏幕子矩形,应该独立于屏幕的其余部分进行更新,那么您会希望使用子视图。