2010-09-23 63 views
5

我创建了一个自定义的UIControl,通过drawRect:呈现它的视图。我想使用现有的backgroundColor属性来允许通过Interface Builder进行自定义。但是,如果设置了backgroundColor,则在调用drawRect:时,整个矩形已被填充。我有opaque = NO和clearsContextBeforeDrawing = YES。如果我将backgroundColor设置为clearColor,那么我只能渲染我想要的部分。使用backgroundColor绘制部分透明的UIView

如何防止UIView自动填充backgroundColor的整个矩形?

我应该提到自定义控件放置在Interface Builder中,因此initWithCoder:方法正用于实例化对象。

这当然应该尽可能如果从UIButton的继承 - 它使用的backgroundColor - 矩形尚未填写

回答

1

由于这是一个自定义的控制,您可以加入一个变量UIColor *myColor,并在。初始化方法,在从笔尖读取后,设置myColor = self.backgroundColorself.backgroundColor = [UIColor clearColor]?那么显然在你的drawRect中使用myColor

我还没有尝试过这一点,它似乎有点难看,但也许它的作品?

2

您需要在此改变:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx; 

这是其中应用的背景色。如果你想让视图处理背景颜色,可以调用super的drawLayer方法。