首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >立即调用CATransaction完成

立即调用CATransaction完成
EN

Stack Overflow用户
提问于 2013-11-14 11:01:23
回答 4查看 20.5K关注 0票数 52

我试图在我的CAAnimation完成后执行一个完成块。然而,动画块似乎是在我的动画完成之前调用的。不过,动画仍然是正确的。

代码语言:javascript
复制
[CATransaction begin];
[self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"];
[CATransaction setCompletionBlock:completionBlock];
[CATransaction commit];

dropAndBounceAnimation是位置上的CAKeyFrameAnimation .y,具有固定的持续时间。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-14 11:01:23

我不确定这是否真的是正确的修复,但通过在添加图层动画之前设置完成块,在正确的时间一致调用完成块。

代码语言:javascript
复制
[CATransaction begin];
[CATransaction setCompletionBlock:completionBlock];
[self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"];
[CATransaction commit];
票数 116
EN

Stack Overflow用户

发布于 2015-04-15 12:13:33

在添加动画之前,需要设置完成块。

代码语言:javascript
复制
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat: 1.0f] forKey:kCATransactionAnimationDuration];

[CATransaction setCompletionBlock:^{
// ... whatever you want to do when the animation is complete
}];

[self.googleMapsView animateToCameraPosition:[GMSCameraPosition 
                    cameraWithLatitude:LATITUDE
                             longitude:LONGITUDE
                                  zoom:ZOOM]];

[CATransaction commit];

这必须在视图上的动画完成后触发完成块。

票数 16
EN

Stack Overflow用户

发布于 2016-11-28 14:47:07

以下是Swift 3.0.1,Xcode 8版本:

代码语言:javascript
复制
CATransaction.begin()

CATransaction.setCompletionBlock({
  print("Transaction completed")
})

print("Transaction started")
view.layer.add(dropAndBounceAnimation, forKey: "appearance")

CATransaction.commit()
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19975938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档