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]];}

ありがとう、サミ。

4

2 に答える 2

2

Apple のドキュメントには、これを行う方法が記載されています。重要なのは、ウィンドウのbackgroundColorアルファを目的の値に設定することです。opaqueまた、ウィンドウのプロパティをNO(YESデフォルトでは)に設定する必要があります。

// 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];
于 2011-02-08T02:47:45.443 に答える
0

ここに別の方法があります。

self.window <--- ベース ビューとこのアルファが変更されるとします (ただし、完全に偽物です)。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];

上記のコードを使用してメソッドを作成できます:)

于 2011-02-08T04:28:24.193 に答える