2011-03-26 35 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中設置它: