7

Matt GemmellのMAAttachedWindow(http://mattgemmell.com/source)とNSStatusItemを使用して、メニューバーにカスタムビューを表示しています。フェードインとフェードアウトの方法について混乱しています。通常、私は次のようなことをします:

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

フェードアウトするには:

[[window animator] setAlphaValue:0.0];

ただし、このコードはMAAttachedWindowでは効果がないようです。何か案は?

ありがとう

4

2 に答える 2

9

古い投稿を汚して申し訳ありませんが、アクセサ/ゲッターを追加する必要がなく、アルファ値を直接設定することは私にとっては問題なく機能することを言及する価値があると思いました。

単に行う(セットアップまたはコースによって異なります):

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

正常に動作します。

于 2011-02-25T19:08:06.240 に答える
5

私は 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 から継承されたバージョンが暗黙的なアニメーションのために呼び出されることを期待しています。しかし、そうは見えません。

于 2009-10-19T22:29:52.417 に答える