我有一个名为“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方法之外我该怎么办呢?提前。
答案 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绘制到其他上下文中。