核心动画回调

Sco*_*dyk 2 macos cocoa delegates core-animation callback

我正在使用核心动画在我的应用程序中的不同视图状态之间进行转换.但是,我需要找到一种在动画完成后执行不同任务的方法.我知道我可以实现委托方法并使用

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag;
Run Code Online (Sandbox Code Playgroud)

回调,但是没有简单的方法来跟踪哪个动画结束.

我可以想到一些繁琐的解决方案,比如使用一系列标志和计数器,但是我想知道是否有更有效和实用的方法来解决这个问题.

有什么想法?

Mih*_*ria 7

使用setValue:ForKey方法为每个动画分配唯一的名称.

[animation setValue:@"myUniqueName" forKey:@"name"];
Run Code Online (Sandbox Code Playgroud)

稍后,在animationDidStop方法中使用它来找出停止的动画

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished {
    if([[theAnimation valueForKey:@"name"] isEqual: @"myUniqueName"] && finished){
               //code
    } 
    if([[theAnimation valueForKey:@"name"] isEqual: @"otherName"] && finished){
        //code
    } 
}
Run Code Online (Sandbox Code Playgroud)