我正在创建一个自定义UIControl,通过drawRect:
呈现它的视图。我想使用现有的backgroundColor属性来允许通过Interface Builder进行自定义。但是,如果设置了backgroundColor,则在调用drawRect:时,整个矩形已经填充。我有opaque = NO和clearsContextBeforeDrawing = YES。如果我将backgroundColor设置为clearColor,那么我只能渲染我想要的部分。
如何防止UIView自动填充backgroundColor整个矩形?
我应该提到自定义控件放在Interface Builder中,因此initWithCoder:方法用于实例化对象。
这肯定是可能的,就好像你从UIButton继承 - 它使用backgroundColor - 矩形尚未填充。
答案 0 :(得分:2)
您需要覆盖:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;
这是应用背景颜色的地方。如果希望视图处理背景颜色,请调用super的drawLayer方法。
答案 1 :(得分:1)
由于这是一个自定义控件,您是否可以添加变量UIColor *myColor
,并且在init方法中,从nib读取后,设置myColor = self.backgroundColor
和self.backgroundColor = [UIColor clearColor]
?然后显然在drawRect中使用myColor
。
我没试过这个,看起来有点难看,但也许有用吗?