【问题标题】:Draw Rect and optimization绘制矩形和优化
【发布时间】:2012-08-08 03:07:42
【问题描述】:

我有一个 NSMutableArray 持有对象(对象代表弧);

每次我点击屏幕时,数组中都会添加一个圆圈,并且绘制的矩形集需要更新。我不是打电话给drawRect:,只是告诉它需要更新。

drawRect: 每次查看圆圈数组时,是重新绘制 每个 圆圈,还是仅重绘新的/与前一次相比没有改变的内容?

如果它确实重绘了每个圆圈,是否有任何好的做法可以针对此进行优化?

【问题讨论】:

  • 你调用什么方法让视图知道它需要更新?

标签: cocoa-touch optimization drawing


【解决方案1】:

您的绘图代码完全按照它所说的去做——如果您编写它来绘制每个圆圈,那么每个圆圈都会被绘制。您可以编写drawRect: 方法,使其考虑到传递的矩形,这是视图的“脏”部分——需要更新的部分,但只有通过测试确定后才值得这样做和测量,您的绘图是一个性能问题。

Cocoa Touch 剪辑您的绘图,以便 it 不必刷新整个屏幕,如果您使用而不是使用 setNeedsDisplay setNeedsDisplayInRect:,传递一个合适的脏矩形。例如,当添加一个新圆时,您可以只传递每个新圆的边界矩形。

【讨论】:

  • 感谢您的帮助我不知道该方法“setNeedsDisplayInRect:”
【解决方案2】:

你的意思是你在调用 setNeedsDisplay 吗?如果是这样,该方法会重绘整个视图。如果您只想重绘视图的一部分,可以使用 setNeedsDisplayInRect:。

【讨论】:

  • 是的,我没有打开 xcode,所以我猜这个方法被称为“sets needsupdate”应该是“setNeedsDisPlay”
猜你喜欢
  • 2012-12-28
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多