UIControl具有透明背景

时间:2013-01-10 09:05:45

标签: iphone ios uicontrol

我有一个UIControl子类。我使用以下代码更改它的背景颜色:

- (void)drawRect:(CGRect)rect
{
    [self.backgroundColor setFill];
    UIRectFill([self bounds]);
}

这适用于除[UIColor clearColor]以外的所有颜色。如何使UIControl透明的背景?

3 个答案:

答案 0 :(得分:5)

您应该在initWithFrame或/和initWithCoder中设置清晰的背景颜色

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

        self.backgroundColor = [UIColor clearColor];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self)
    {
        self.backgroundColor = [UIColor clearColor];
    }
    return self;
}

控件的默认背景将是透明的,然后您可以根据需要填充drawRect中的任何背景颜色。

它在您的示例中不起作用的原因是该控件具有默认的黑色背景,该背景设置在drawRect的某个位置(可能在父UIView init中)。设置彩色背景时,它会覆盖黑色背景。设置清除后,您会看到默认的黑色背景。

答案 1 :(得分:3)

对于UIControl <{1}}

的子类UIView
self.backgroundColor = [UIColor <anycolor>]; 

应该足够了,正如@ n​​iko34描述的那样,如果你想让控件具有透明色,即[UIColor clearColor]或任何其他具有任何透明度的颜色,你还需要设置

self.opaque = NO;

否则任何透明色将以不透明的方式绘制

答案 2 :(得分:0)

尝试将alpha设置为0.5或更低,我认为它应该显示半透明背景,黑色色调如[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5]