我正在使用 Matt Gemmell 的 MAAttachedWindow ( http://mattgemmell.com/source ) 和 NSStatusItem 在菜单栏中显示自定义 View 。我很困惑如何让它淡入淡出。通常我会做这样的事情:
[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 继承的版本。它似乎没有。
关于objective-c - MAAttachedWindow 的淡入/淡出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1548682/