2

我注意到在 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 返回总是是的。

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

任何建议都非常感谢!谢谢

汤姆

4

1 回答 1

2

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

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

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

于 2012-03-09T01:13:40.223 回答