HUD NSPanel不太透明

时间:2011-03-26 17:25:04

标签: cocoa xcode transparency nspanel

我一直在寻找网络,但我没有遇到改变HUD透明度的方法(所有面板透明度,包括标题栏)。有可能改变它吗?

THX

3 个答案:

答案 0 :(得分:2)

您应该能够使用从NSWindow继承的setAlphaValue

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html

[ myPanel setAlphaValue: 0.5 ];

答案 1 :(得分:1)

这是不可能的。 HUD面板是透明的;他们不会让你改变他们的不透明度或基本观点的不透明度。

NSLog(@"opaque before? %@", [hud isOpaque] ? @"YES" : @"NO");
[hud setOpaque:YES];
NSLog(@"opaque after? %@", [hud isOpaque] ? @"YES" : @"NO");

OpaqueHUD[18952:a0b] opaque before? NO
OpaqueHUD[18952:a0b] opaque after? NO

NSLog(@"alpha before: %.2f", [hud alphaValue]);
[hud setAlphaValue:1.0f];
NSLog(@"alpha after: %.2f", [hud alphaValue]);

OpaqueHUD[18952:a0b] alpha before: 1.00
OpaqueHUD[18952:a0b] alpha after: 1.00

NSView * contentView = [hud contentView];    
// In layer-backed mode
NSLog(@"content alpha before: %.2f", [contentView alphaValue]);
[contentView setAlphaValue:1.0];
NSLog(@"content alpha after: %.2f", [contentView alphaValue]);

OpaqueHUD[18952:a0b] content alpha before: 1.00
OpaqueHUD[18952:a0b] content alpha after: 1.00

您必须:1)在其中放置一个自定义的不透明子视图,并使用半透明的标题栏; b)使用常规样式的NSPanel,其可以更改其背景颜色和不透明度,并使其成为常规标题栏;或d)create your very own custom window(与该文章底部另一篇文章的良好联系)。另请参阅本文关于制作自己的window frame(警告:那个使用私有API,并且已有几年历史)。

答案 2 :(得分:1)

有可能。您只需要通过在面板视图的Core Animation层上设置颜色(包括alpha)来以编程方式执行此操作。以下是设置HUD面板透明度稍低的示例:

view.layer.backgroundColor = [NSColor colorWithSRGBRed:0.2 green: 0.2 blue: 0.2 alpha:0.7].CGColor

请记住,在加载视图后必须执行此操作,例如。不要在init中设置它: