2015-12-09 77 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

我沒有得到你,發生了什麼? –