我只想使用以下函数在视图中绘制一个简单的矩形:
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
if (self.drawTextBouble) {
[[UIColor blueColor] setFill];
UIBezierPath *aPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(40, 0, 230, 120) cornerRadius:12.0];
[aPath fill];
}
}
上面的代码用纯黑色背景填充视图,矩形外部不透明。我该如何解决这个问题?
编辑:
以下解决方案正在运行,但这也有效:
[self setOpaque:NO];
答案 0 :(得分:9)
您的绘图代码没问题。如果您希望自定义绘制视图具有透明背景,则只需设置
即可self.backgroundColor = [UIColor clearColor];
在视图的- (id)initWithFrame:(CGRect)frame
编辑:关于调用[super drawRect:rect]
的一点注意事项。 UIView
文档说:
如果直接子类
UIView
,则此方法的实现不需要调用super。但是,如果要为不同的视图类创建子类,则应在实现中的某个时刻调用super。