私は CoreAnimation と暗黙的なアニメーションの使用法に特に精通しているわけではありません。ただし、明示的な alphaValue プロパティを MAAttachedWindow クラスに追加することで、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 から継承されたバージョンが暗黙的なアニメーションのために呼び出されることを期待しています。しかし、そうは見えません。