NSAnimationContext完成参数?

时间:2017-02-01 19:44:44

标签: cocoa completionhandler nsanimationcontext

我的动画可以在几个不同的类似视图上执行(在数组中管理),但是完成处理程序不接受参数。那么如何在完成时告诉我正在完成哪个动画?

以下用于为一个(几个)sectionViews的框架设置动画。动画结束后,我需要能够向特定的sectionView发送通知。

NSLog(@"Animation started");

[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:kAnimationDuration];
[[NSAnimationContext currentContext] setCompletionHandler:^{
    [self doStuff];

    NSLog(@"Animation complete - now we need to notify the correct sectionView");
}];

[[sectionView animator] setFrame:[self frameForSectionView:sectionView]];

[NSAnimationContext endGrouping];

1 个答案:

答案 0 :(得分:1)

只需在完成处理程序块中引用sectionView即可。或者,如果它是一个实例变量,静态或全局变量,那么在用当前值初始化的块之外创建一个局部变量,然后在块中引用该局部变量。

该块将捕获该值。