我正在使用Matt Gemmell的MAAttachedWindow(
http://mattgemmell.com/source)和NSStatusItem在菜单栏中显示自定义视图.我很困惑如何让它淡入淡出.通常我会做这样的事情:
[window makeKeyAndOrderFront:self]; [[window animator] setAlphaValue:1.0];
并淡出:
[[window animator] setAlphaValue:0.0];
但是这个代码似乎对MAAttachedWindow没有影响.有任何想法吗?
谢谢
解决方法
我不是特别精通CoreAnimation和隐式动画的使用.但是,我能够通过向MAAttachedWindow类添加一个显式的alphaValue属性来使MAAttachedWindow淡入淡出:
@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]; } ...
通过添加,我能够获得setAlphaValue的隐式动画:
(下面的代码来自Matt的样本“NSStatusItemTest”代码)
- (void)toggleAttachedWindowAtPoint:(NSPoint)pt { ... [attachedWindow makeKeyAndOrderFront:self]; [[attachedWindow animator] setAlphaValue:1.0];
我不确定为什么显式定义alphaValue属性有效.我希望可以为隐式动画调用NSWindow的继承版本.但它似乎并不存在.