iPhone:无法在drawRect外的屏幕上绘图?

时间:2010-05-13 15:19:11

标签: iphone cocoa-touch core-graphics

有没有办法在该视图的drawRect()方法之外的iPhone屏幕上绘制(在UIWindow中的UIView上)?如果是这样,我如何获得图形上下文?

图形指南提到了类NSGraphicsContext,但相关章节似乎是Mac OS X文档中的盲目复制/粘贴,并且iPhone SDK中没有这样的类。

编辑:我正在尝试修改触摸事件处理程序中视图的内容 - 突出显示触摸的视觉元素。在Windows中,我使用GetDC()/ ReleaseDC()而不是InvalidateRect()/ WM_PAINT的完整循环。试着在这里做同样的事情。将活动(可触摸)元素排列为子视图是一个巨大的性能损失,因为它们有大约一百个。

2 个答案:

答案 0 :(得分:5)

没有。绘图是drawRect:(或CALayer)的工作。即使你可以在其他地方绘制,也会产生代码味道(就像在Mac上一样)。任何其他代码应该只是更新您的模型状态,然后将自己设置为需要显示。

当您需要显示时,将显示代码移动到其他地方并不会让它更快。当您不需要显示时(因此未设置为需要显示),如果显示代码位于drawRect:中,则不会显示。

  

我正在尝试修改触摸事件处理程序中视图的内容 - 突出显示触摸的视觉元素。在Windows中,我使用[Windows代码]。 ...将主动(可触摸)元素排列为子视图是一个巨大的性能损失,因为它们有大约一百个。

听起来Core Animation可能更适合这种情况。

答案 1 :(得分:0)

我不认为我们能够在drawRect外部绘制...但是为了获得当前的图形上下文,你所做的只是CGContextRef c = UIGraphicsGetCurrentContext();希望有所帮助。