我试图在CG中获得透明背景,但它一直是黑色的。
我有以下代码:
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
DLog(@">>> Alloc: DrawingCanvas [0x%X]", (unsigned int)self);
[self setOpaque:NO];
[self setBackgroundColor:[UIColor clearColor]];
}
return self;
}
- (void) drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect frame = rect;
int counter = 3;
CGContextClearRect(context, frame);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, frame);
}
如何让此代码显示透明背景?
答案 0 :(得分:4)
使用该设置,只要您没有将clearsContextBeforeDrawing
设置为NO,当调用drawRect:
方法时,背景应该已经是透明的。删除CGContextClearRect和其他绘图调用。
答案 1 :(得分:3)
你可以简单地删除这些行:
CGContextClearRect(context, frame);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, frame);
只要你将opaque设置为NO并将clearColor设置为backgroundColor,一切都应该没问题。
绘图时要小心,因为您的其他绘图代码可能完全填满背景(在非裁剪的上下文中处理[path fill]
个事物。)
答案 2 :(得分:1)
我遇到了同样的问题,解决方法是从父视图的类中设置我正在绘制的UIView的backgroundColor
属性。我不需要任何代码来清除UIView类中绘图发生的背景。
myDrawingView.backgroundColor = [UIColor clearColor];