我正在创建一个通过drawRect:
呈现视图的自定义UIControl。我想使用现有的backgroundColor属性来允许通过接口生成器进行自定义。但是,如果设置了backgroundColor,则在调用drawRect:时,整个矩形已被填充。我有opaque = NO和clearsContextBeforeDrawing = YES。如果我将backgroundColor设置为clearColor,那么我可以只渲染我想要的部分。
如何防止UIView自动用backgroundColor填充整个矩形?
值得一提的是,自定义控件放在接口生成器中,因此initWithCoder:方法用于实例化对象。
这当然是可能的,因为你继承了UIButton --它使用了backgroundColor --这个矩形还没有被填充。
发布于 2011-06-02 11:32:00
您需要重写:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;
这是应用背景色的地方。如果希望视图处理背景颜色,请调用超级对象的drawLayer方法。
发布于 2011-05-30 07:19:47
由于这是一个自定义控件,您是否可以添加一个变量UIColor *myColor
,并在从nib读取该变量后,在init方法中设置myColor = self.backgroundColor
和self.backgroundColor = [UIColor clearColor]
?然后很明显在你的drawRect中使用myColor
。
我还没有试过这个,它看起来有点难看,但也许它有效呢?
https://stackoverflow.com/questions/3775759
复制相似问题