これはできる限りシンプルなので、人生のどこに問題があるのかを見つけることはできません。ドキュメントをガイドとして調べましたが、それでも機能しませんでした。大きなビューの中にビューがあります。 IBActionは内部のビューをフェードアウトすることになっています...それだけです。ここに私が持っているものがあります:
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];
NSLogsでviewDictとtheAnimを確認しましたが、どちらもnilではありません。私はこれが機能していた古いプログラムからこれをほとんどコピーしましたが、現在何が問題なのかを見つけることができません。
Xcode 5.1.1を使用しています
現代のアプローチははるかに簡単です:
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
context.duration = 1;
view.animator.alphaValue = 0;
}
completionHandler:^{
view.hidden = YES;
view.alphaValue = 1;
}];
ビュー階層がレイヤーバッキングの場合、実際には次のことで十分です。
view.animator.hidden = YES;