Ios CGContext不保留渲染线
我有一个drawRect实现:Ios CGContext不保留渲染线,ios,core-graphics,cgcontext,Ios,Core Graphics,Cgcontext,我有一个drawRect实现: - (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); if (self.colorToRender) { CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor); } else { CGContext
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
if (self.colorToRender)
{
CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor);
}
else
{
CGContextSetStrokeColorWithColor(ctx,[UIColor whiteColor].CGColor);
}
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, self.center.x, self.center.y);
CGContextAddLineToPoint(ctx, self.pointToRender.x, self.pointToRender.y);
CGContextStrokePath(ctx);
}
这将每次渲染一条线,但渲染的线永远不会留在屏幕上
如何将新线渲染到屏幕上并保留以前渲染的线?drawRect会在每次视图需要绘制时调用。如果要绘制多条线,则必须使用drawRect方法再次绘制每条线 添加线时,将线添加到数组中,可以在drawRect方法中使用该数组来确定要绘制的线
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
if (self.colorToRender)
{
CGContextSetStrokeColorWithColor(ctx, self.colorToRender.CGColor);
}
else
{
CGContextSetStrokeColorWithColor(ctx,[UIColor whiteColor].CGColor);
}
// For each line you want to draw:
for (MyLine *thisLine in myLines) {
CGContextMoveToPoint(ctx, thisLine.startPoint.x, thisLine.startPoint.y);
CGContextAddLineToPoint(ctx, thisLine.endPoint.x, thisLine.endPoint.y);
CGContextStrokePath(ctx);
}
}
很可能您的视图的clearContextBeforeDrawing标志已设置(这是默认值,在XIB中也默认勾选)->我正在为每一行调用setNeedsDisplay,现在我已在views initWithFrame方法中将clearContextBeforeDrawing设置为NO。我得到了同样的结果。我最终使用了一个BiezerPath,它似乎工作得更好。@Helium3您确定调用了一个,而不是
initWithCoder:
(即来自XIB)吗?