【问题标题】:IOS 5 SetNeedsDisplayInRect causes a FullScreen-InvalidityIOS 5 SetNeedsDisplayInRect 导致全屏无效
【发布时间】:2011-12-12 09:52:42
【问题描述】:

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

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

为什么会这样??我做错了什么?

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

汤姆

【问题讨论】:

  • 这似乎是 iOS5 中的一个错误 - 我也遇到了。

标签: objective-c ios ios5 quartz-graphics setneedsdisplayinrect


【解决方案1】:

此行为记录在 QA1708 中 here 提高 iOS 上的图像绘制性能

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-09
    • 2012-04-06
    • 2012-11-08
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多