CATransaction完成被立即调用

我试图在我的CAAnimation完成后执行完成块。 不过,看起来我的animation完成之前就调用了animation块。 animation仍然正确发生。

[CATransaction begin]; [self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"]; [CATransaction setCompletionBlock:completionBlock]; [CATransaction commit]; 

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

3 Solutions collect form web for “CATransaction完成被立即调用”

我不确定这是否是正确的修复方法,但是通过为图层添加animation之前设置完成块可以在正确的时间始终调用完成块。

 [CATransaction begin]; [CATransaction setCompletionBlock:completionBlock]; [self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"]; [CATransaction commit]; 

您需要在添加animation之前设置animation块。

 [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]; 

这必须在视图上完成该animation之后触发完成块。 希望能帮助到你。 竖起大拇指 ;)

这里是Swift 3.0.1,Xcode 8版本:

 CATransaction.begin() CATransaction.setCompletionBlock({ print("Transaction completed") }) print("Transaction started") view.layer.add(dropAndBounceAnimation, forKey: "appearance") CATransaction.commit() 
  • Xcodeunit testing用Cocoapods
  • 使用自动布局在UICollectionView中指定单元的一个维度
  • iOS配音状态
  • 左侧主导和主导主导之间的区别?
  • 未能安装“iOS 6.1 Simulator”XCode 5
  • 在iOS上发送HTTP POST请求
  • 除非应用程序要求全屏,否则必须提供启动故事板或xib
  • 如何切换到iPhone 5的不同Storyboard?
  • 如何在Xcode 4中切换.h和.m
  • 如何到达didSelectRowAtIndexPath中当前选定的单元格?
  • iOS __kindof NSArray?