如何使用其他方法调用iPhone进行绘制?

时间:2010-04-05 03:03:52

标签: objective-c iphone quartz-graphics

我有一个名为“drawingViewController”的视图,我有drawRect方法:

- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
    CGContextMoveToPoint(context, 0.0f, 0.0f);
    CGContextAddLineToPoint(context, 100.0f, 100.0f); 
    CGContextStrokePath(context);


}

但是我想定义一些其他的绘图方法,但是它没有用,除了调用drawRect方法之外我该怎么办呢?提前。

3 个答案:

答案 0 :(得分:2)

为什么你想要另一种方法?当客户区需要绘制或重绘时,这是框架调用的那个。

为了清楚起见,你永远不会自己打电话给drawRect:。您拨打setNeedsDisplay:setNeedsDisplayInRect:

答案 1 :(得分:1)

drawRect:将由框架调用以绘制视图。因此,如果要更新视图,则需要通过调用setNeedsDisplay:或setNeedsDisplayInRect来指示需要更新视图的框架:

答案 2 :(得分:1)

如上所述,你应该只调用setNeedsDisplay:并让系统在适当的时候调用drawRect:。

如果您需要在调用drawRect:之外的时间绘制(例如在单独的线程中),请根据需要维护您绘制的屏幕外CGContext,然后将内容复制到UIGraphicsGetCurrentContext drawRect:context。

将一个上下文复制到另一个上下文的方法是使用CGDataProvider设置CGImage,该CGData引用CGBitmapContext拥有的相同数据。在屏幕外的CGBitmapContext中绘制图形,然后使用CGContextDrawImage绘制到其他上下文中。