UIView中的黑色背景?

我在网上跟随一个教程来绘制一个子类UIView。 本教程展示了一个带有白色背景的UIView,我通过简单的改变super的bg颜色来解决这个问题。 问题是,当触摸结束时,背景不清晰。 我不知道。 我只是试图设置填充颜色[uicolor clearcolor]; 不成功。 这是我正在使用的代码:

@implementation CachedLIView { UIBezierPath *path; UIImage *incrementalImage; // (1) } - (id)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { [self setMultipleTouchEnabled:NO]; [self setBackgroundColor:[UIColor whiteColor]]; path = [UIBezierPath bezierPath]; [path setLineWidth:2.0]; } return self; } - (void)drawRect:(CGRect)rect { [incrementalImage drawInRect:rect]; // (3) [path stroke]; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint p = [touch locationInView:self]; [path moveToPoint:p]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint p = [touch locationInView:self]; [path addLineToPoint:p]; [self setNeedsDisplay]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event // (2) { UITouch *touch = [touches anyObject]; CGPoint p = [touch locationInView:self]; [path addLineToPoint:p]; [self drawBitmap]; // (3) [self setNeedsDisplay]; [path removeAllPoints]; //(4) } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { [self touchesEnded:touches withEvent:event]; } - (void)drawBitmap // (3) { UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0); [[UIColor blackColor] setStroke]; if (!incrementalImage) // first draw; paint background white by ... { UIBezierPath *rectpath = [UIBezierPath bezierPathWithRect:self.bounds]; // enclosing bitmap by a rectangle defined by another UIBezierPath object [[UIColor clearColor] setFill]; [rectpath fill]; // filling it with white } [incrementalImage drawAtPoint:CGPointZero]; [path stroke]; incrementalImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } 

在你的视图中放入以下内容 – (id)initWithFrame方法:

 self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor clearColor]; } return self; 

这样,当使用bezier,CGContext …方法或其他方法绘图时,您的视图子类将具有透明背景=无黑色。