CATransaction完成被立即调用
我试图在我的CAAnimation完成后执行完成块。 不过,看起来我的animation完成之前就调用了animation块。 animation仍然正确发生。
[CATransaction begin]; [self.view.layer addAnimation:self.dropAndBounceAnimation forKey:@"appearance"]; [CATransaction setCompletionBlock:completionBlock]; [CATransaction commit];
dropAndBounceAnimation是position.y上的CAKeyFrameAnimation,具有固定的持续时间。
我不确定这是否是正确的修复方法,但是通过在为图层添加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()