因此,我有一个自定义 UIView 子类,它可以绘制圆角边缘。东西绘制得很完美,但是背景总是填充整个边界,尽管首先剪切到路径。边框也画出来了above矩形背景,尽管我在绘制矩形中绘制了边框:在背景之前。所以我删除了drawRect:的全部内容,它现在实际上是空的——尽管如此,背景还是被绘制了!
有人对此做出解释吗?我在 Interface Builder 中设置了背景颜色。谢谢!
抱歉这个独白。 :)
问题是 UIView 的图层显然绘制了背景,它独立于drawRect:
。这就是为什么你不能通过覆盖来摆脱背景drawRect:
.
您可以覆盖- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
并让图层绘制任何你想要的,或者你覆盖- (void) setBackgroundColor:(UIColor *)newColor
并且不分配newColor to 背景颜色,但是到你自己的伊瓦尔,比如我的背景颜色。然后您可以使用我的背景颜色在绘制矩形中;随心所欲地绘制背景。
压倒一切setBackgroundColor:
定义一个实例变量来保存背景颜色,例如我的背景颜色。在你的 init 方法中,将真实的背景颜色设置为clearColor:
- (id) initWithCoder:(NSCoder *)aDecoder
{
if ((self = [super init...])) {
[super setBackgroundColor:[UIColor clearColor]];
}
return self;
}
覆盖:
- (void) setBackgroundColor:(UIColor *)newColor
{
if (newColor != myBackgroundColor) {
[myBackgroundColor release];
myBackgroundColor = [newColor retain];
}
}
然后使用我的背景颜色在你的drawRect:方法中。这样您就可以在代码中使用 Interface Builder(或 Xcode4)分配的颜色。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)