Изменение альфа фона окна, а не всего окна - PullRequest
0 голосов
/ 08 февраля 2011

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

Есть ли способ просто изменить альфа-значение окна, а не вид содержимого внутри него?

- (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]];}

Спасибо, Сами.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2011

Документы Apple дает способ сделать это. Ключ должен установить альфа backgroundColor окна в желаемое значение. Вы также должны убедиться, что для свойства opaque окна установлено значение NO (по умолчанию YES)

e.x.

// 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];
0 голосов
/ 08 февраля 2011

Вот другой способ.

Предположим, self.window <--- базовый вид и эта альфа будет изменена (но точно фальшивая). subView1, subView2 <- эти представления являются содержимым self.window. и их альфа не должна быть изменена. </p>

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];

Вы можете создать метод, используя приведенный выше код :)

...