使UIView前景透明

时间:2015-12-09 13:23:33

标签: ios objective-c uiview drawrect

我正在修改IOS应用以允许额外的背景图层。所有现有的叠加层都是UIImageViews,处理transparency就好了。

现有背景是主要UIView。我想将黑色背景更改为transparent,以便放置另一个视图。它不起作用。最简单的代码无法正常工作,如下所示:

# import "TestUIView.h"
@implementation TestUIView

- (void)drawRect:(CGRect)rect {

    self.opaque = NO;
    [self setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0]];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 0,0,0,0);
    CGContextFillRect(context, rect);
// and here goes my code where I draw to the transparent background
}
@end

执行此操作时,会生成黑色矩形。我将其背景设置为透明,并用透明填充其前景。我需要做些什么来获得UIView我可以在透明背景下绘制的地方?

(而且我知道我可以整体改变视图的alpha,这不是问题。我希望在真正透明的背景上进行不透明的绘制。)

更新:它不在setbackgroundcolor中,我很欣赏它没有必要,所以不应该在那里,但如果它被注释掉同样的事情。我无法在透明的背景下画画;上面的代码显示我甚至无法绘制透明矩形。

由于

1 个答案:

答案 0 :(得分:4)

默认情况下,opaque的值为NO。此外,如果您将alpha设置为0,那么该视图将对用户完全不可见。如果您想要具有透明度,则需要具有大于0且小于1的Alpha值。

此外,backgroundColor属性用于设置视图的颜色,而不是自己绘制颜色。

如果您需要更改drawRect中的背景颜色,则必须自行绘制:

self.backgroundColor=yourColorWithSomeAlphaValue;//
[self.backgroundColor setFill];
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);

here:

中提供了更多说明