2009-10-10 5 views
7

için Fade in/Fade out Menü çubuğunda özel bir görünüm görüntülemek için bir NSStatusItem ile Matt Gemmell'in MAAttachedWindow (http://mattgemmell.com/source) kullanıyorum. Solmaya ve kaybolmaya nasıl yardımcı olacağım konusunda kafam karıştı. Normalde böyle bir şey yapacağını:MAAttachedWindow

[window makeKeyAndOrderFront:self]; 
[[window animator] setAlphaValue:1.0]; 

ve zayıflatmak için:

[[window animator] setAlphaValue:0.0]; 

Ancak bu kod MAAttachedWindow ile hiçbir etkisi var gibi görünüyor. Herhangi bir fikir?

Teşekkür

cevap

5

Özellikle de CoreAnimation usta ve örtük animasyonlar kullanımı değilim.

: setAlphaValue çalışması için, ben örtülü animasyon elde edebilir olduğunu ekleyerek

@interface MAAttachedWindow : NSWindow { 
    CGFloat _alphaValue; 
... 
} 
-(CGFloat) alphaValue; 
-(void) setAlphaValue:(CGFloat)windowAlpha; 
... 

@implementation MAAttachedWindow 

- (CGFloat) alphaValue { 
return _alphaValue; 
} 

- (void) setAlphaValue:(CGFloat)windowAlpha { 
    _alpha = windowAlpha; 
[super setAlphaValue:windowAlpha]; 
} 
... 

: Ancak, ben MAAttachedWindow sınıfına açık alphaValue özelliğini ekleyerek solmaya MAAttachedWindow elde edebildi açıkça alphaValue mülkiyet çalışmalarını tanımlayan neden

- (void)toggleAttachedWindowAtPoint:(NSPoint)pt 
{ 
... 
    [attachedWindow makeKeyAndOrderFront:self]; 
[[attachedWindow animator] setAlphaValue:1.0]; 

(Matt'in Numune "NSStatusItemTest" kodundan cribbed kod aşağıda) emin değilim. NSWindow gelen devralınan sürümü örtülü animasyon için çağrılırdı bekliyoruz. Öyle görünmüyor.

+0

Çok teşekkürler :-) – indragie

+0

Mükemmel çalışır. Tekrar teşekkürler – indragie

9

Eski bir gönderiyi dert ettiğim için üzgünüm, ancak alfa değerinin doğrudan ayarlanmasına gerek kalmadan benim için işe yaradığını söylemeye değindim.

Basitçe (ayarlarınıza bağlı olarak ya kursu) yapıyor:

[[self window] addChildWindow:attachedWindow ordered:NSWindowAbove]; 
[attachedWindow setAlphaValue:0.0]; 

[NSAnimationContext beginGrouping]; 
[[NSAnimationContext currentContext] setDuration:0.5]; 
[attachedWindow makeKeyAndOrderFront:self]; 
[[attachedWindow animator] setAlphaValue:1.0]; 
[NSAnimationContext endGrouping]; 

İşleri gayet.

+0

Benim için de çalışıyor - MAAttachedWindow sınıfını hiç değiştirmemelisiniz. Belki kaynağı bir noktada güncelledi? – leecbaker