在CGContext上绘制图像而不使用initWithFrame

时间:2011-06-22 19:16:45

标签: iphone objective-c uiview cgcontext

我目前有一个UIImage对象,使用initWithFrame进行初始化,然后我在-(void)drawRect:(CGRect)rect{}中使用`CGContext进行了一些2D绘图。非常基本的。我想知道的是,我怎样才能通过例如按钮或任何事件(不仅仅是初始化)?

我尝试将drawRect内的代码复制到名为redraw的新方法,但这会导致明显错误:

  

CGContextMoveToPoint:无效的上下文0x0

我只想知道如何在创建UIView时绘制CGContext。 不是例如如何收听UIButton事件

谢谢。

1 个答案:

答案 0 :(得分:2)

您只能在UIView的drawRect:方法内部绘制或通过创建自己的图像上下文。您无法通过drawRect:以外的任何方式绘制到屏幕或为CALayer实现绘图。您需要相应地在视图上设置变量,然后调用setNeedsDisplay重绘它。例如,在视图中添加一个属性@property(retain) UIImage *image;,在其上设置新图片,然后调用setNeedsDisplay(甚至更好,实现setImage:方法并在此处调用[self setNeedsDisplay]; )。