2015-12-09 43 views
3

我正在修改IOS应用程序以允许额外的背景层。所有现有的覆盖是UIImageViews,处理transparency就好了。使UIView前景透明

现有背景主要是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中,我感谢它没有必要,所以不应该在那里,但同样的事情发生,如果它被注释掉。我不能背景透明;上面的代码显示我甚至无法制作透明矩形来绘制。

感谢

+0

提供的只是尽量 yourview.backgroundColor = [[的UIColor blackColor ] colorWithComponent:0.5]; –

+0

如果alpha为0,则不会看到任何内容。那么你期望什么?默认opaue为 –

+0

。 –

回答

4

默认的opaque值是NO。此外,如果将alpha设置为0,则该视图将对用户完全不可见。如果要获得透明度,则需要大于0且小于1的alpha值。

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

如果您需要更改背景颜色drawRect,你将不得不自己绘制它:

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

更多解释在here:

+0

寻找相同的,这正是我正在寻找。谢谢T –

+0

如果我注释掉我的setBackgroundColor,完全一样的事情发生。在那种情况下,我只画了一个透明的矩形,除了它不透明,它的黑色(它下面有一个被遮挡的UIView)。 –

+1

我没有得到你,发生了什么? –