2011-03-26 3 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

+1

Errr ... Насколько я знаю, 0.5 меньше 1 ... – Macmade

+0

Я хочу меньше прозрачности, чем AlphaValue = 1, поэтому «AlphaValue должно быть> 1» – Andreu

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) поставить пользовательские непрозрачный подвид там и жить с полупрозрачным заголовка; б) используйте NSPanel с обычным стилем, цвет фона и непрозрачность которого может изменить и жить с ним, являясь обычной строкой заголовка; или d) create your very own custom window (хорошая ссылка на другую запись в нижней части этой статьи). См. Также эту статью о создании собственного window frame (предупреждение: этот использует частный API и ему несколько лет).

1

Это возможно. Вам просто нужно сделать это программно, установив цвет (включая альфа) на слой Core Animation на панели. Вот пример настройки панели HUD с немного меньшей прозрачности:

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

Просто помните, что вы должны сделать это после того, как загрузится вид, например. не устанавливайте его в init:

Смежные вопросы