2011-03-26 106 views
1

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

THX

回答

2

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

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

[ myPanel setAlphaValue: 0.5 ]; 
+0

Thx但问题是[self setAlphaValue:1]是默认的HUD透明度。我想减少透明度! – Andreu 2011-03-26 17:46:10

+1

Errr ...据我所知,0.5小于1 ... – Macmade 2011-03-26 19:15:15

+0

我想要比AlphaValue = 1更少的透明度,所以“AlphaValue应该> 1” – Andreu 2011-03-26 19:38:02

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并且已有几年)。

1

这是可能的。您只需要通过在面板视图的Core Animation图层上设置颜色(包括alpha)来以编程方式执行此操作。这里是稍显不足的透明度设置HUD面板的一个例子:

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

只要记住,你有看法加载后要做到这一点,例如。不要在init中设置它: