使用backgroundColor时绘制部分透明的UIView

时间:2010-09-23 05:55:57

标签: iphone uiview

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

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

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

这肯定是可能的,就好像你从UIButton继承 - 它使用backgroundColor - 矩形尚未填充。

2 个答案:

答案 0 :(得分:2)

您需要覆盖:

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

这是应用背景颜色的地方。如果希望视图处理背景颜色,请调用super的drawLayer方法。

答案 1 :(得分:1)

由于这是一个自定义控件,您是否可以添加变量UIColor *myColor,并且在init方法中,从nib读取后,设置myColor = self.backgroundColorself.backgroundColor = [UIColor clearColor] ?然后显然在drawRect中使用myColor

我没试过这个,看起来有点难看,但也许有用吗?