0

所以我有一个快速的问题,我有下面的方法,它根据滑块的值设置窗口的 alpha 值,但是窗口的内容也变得半透明并最终随着窗口消失。

有没有办法只改变窗口的 alpha 值而不是里面的内容视图?

- (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 的文档提供了一种方法来做到这一点。关键是将窗口的backgroundColoralpha 设置为所需的值。您还必须确保将窗口的opaque属性设置为NOYES默认情况下)。

前任

// 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 <--- 基本视图和这个 alpha 将被更改(但完全是假的)。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 回答