2011-02-08 14 views
0

私は、ウィンドウのアルファ値をスライダの値に応じて設定する以下のメソッドを持っていますが、ウィンドウの内容も半透明になります。最終的にウィンドウで消えます。ウィンドウ全体のアルファベットを変更するのではなく、ウィンドウ全体のアルファ値を変更する

ウィンドウのアルファ値を変更する方法がありますが、ウィンドウ内のコンテンツビューは変更できませんか?

- (IBAction)changeTransparency:(id)sender { 
// Set the window's alpha value. This will cause the views in the window to redraw. 
[self.window setAlphaValue:[sender floatValue]];} 

ありがとう、サミ。

答えて

2

Apple's docsはこれを行う方法を示します。キーは、ウィンドウのbackgroundColorのアルファを希望の値に設定することです。また、ウィンドウのopaqueプロパティをNO(デフォルトではYES)に設定する必要があります。

e.x.

// At some point in your code... 
[window setOpaque:NO]; 

// Then in your changeTransparency: method... 
NSColor *backgroundColor = [window backgroundColor]; 
backgroundColor = [backgroundColor colorWithAlphaComponent:[sender floatValue]]; 

[window setBackgroundColor:backgroundColor]; 
0

これは別の方法です。

と仮定します。 self.window < ---基本ビューとこのアルファは変更されますが(exacatly fake)。 subView1、subView2 < - これらのビューはself.windowの内容です。アルファアルファは変更しないでください。

self.window.backgroundColor = [UIColor clearColor]; 

UIView* anAlphaView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.window.frame.size.widht, self.window.frame.size.height)]; 
anAlphaView.backgroundColor = [UIColor blackColor]; // as you want 
anAlphaView.alpha = 0.5f; // as you want. 
[self.window addSubview:anAlphaView]; 
[anAlphaView release]; 

[self.window addSubview:subView1]; // you should add sub views to self.window 
[self.window addSubview:subView2]; 

あなたは上記のコード使用方法を作ることができます:)

関連する問題