33

これは可能な限り単純であるため、一生何が問題なのかを見つけることはできません。ドキュメントをガイドとして調べましたが、それでも機能しませんでした。より大きなビューの中にビューがあります。AnIBActionは内側のビューをフェード アウトすることになっている. それだけです。これが私が持っているものです:

NSViewAnimation *theAnim;
NSMutableDictionary *viewDict;

// Create the attributes dictionary for the view.
viewDict = [NSMutableDictionary dictionaryWithCapacity:2];

// Set the target object to be the view.
[viewDict setObject:_innerView forKey:NSViewAnimationTargetKey];

// Set this view to fade out
[viewDict setObject:NSViewAnimationFadeOutEffect forKey:NSViewAnimationEffectKey];

theAnim = [[NSViewAnimation alloc] initWithViewAnimations:@[viewDict]];

// Set some additional attributes for the animation.
[theAnim setDuration:1.0];

// Run the animation.
[theAnim startAnimation];

viewDictとをチェックしましたtheAnimNSLog、どちらもではありませんnil。これが機能していた古いプログラムからこれをほとんどコピーしましたが、今は何が問題なのかわかりません。

Xcode 5.1.1 を使用しています。

4

2 に答える 2

77

最新のアプローチははるかに簡単です。

[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
    context.duration = 1;
    view.animator.alphaValue = 0;
}
completionHandler:^{
    view.hidden = YES;
    view.alphaValue = 1;
}];

ビュー階層がレイヤーに支えられている場合、実際には次のようにするだけで十分です。

view.animator.hidden = YES;
于 2014-08-23T03:27:19.803 に答える