GMSMarker不透明度animation不重复

我试图用一个自定义的图标闪烁着一个衰减的animation不透明度GMSMarker。 animation应该重复几次,但不会,它只是执行一个转换,然后停止。 这只在animation不透明属性时才会发生,在animation制作其他属性时工作正常。

这里是代码:

GMSMarkerLayer* layer = marker.layer; CABasicAnimation *blink = [CABasicAnimation animationWithKeyPath:@"opacity"]; blink.fromValue = [NSNumber numberWithFloat:0.0]; blink.toValue = [NSNumber numberWithFloat:1.0]; blink.duration = 1.0; blink.autoreverses = YES; blink.repeatCount = 4; [layer addAnimation:blink forKey:@"blinkmarker"]; 

文档说,我应该能够animation不透明,因为它是GMSMarkerLayer允许我们的属性之一。

我做错了什么,或者是我碰到的一个已知的错误?

我的解决scheme是添加一个委托给animation:

 CABasicAnimation *blink = [CABasicAnimation animationWithKeyPath:@"opacity"]; blink.fromValue = [NSNumber numberWithFloat:1.0]; blink.toValue = [NSNumber numberWithFloat:0.0]; blink.duration = 1.5; [blink setDelegate:self]; [placeMarker.layer addAnimation:blink forKey:@"blinkmarker"]; 

然后当animation完成后,我得到一个callback,并再次添加:

 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { if (flag) { CABasicAnimation *blink = [CABasicAnimation animationWithKeyPath:kGMSMarkerLayerOpacity]; blink.fromValue = [NSNumber numberWithFloat:1.0]; blink.toValue = [NSNumber numberWithFloat:0.0]; blink.duration = 1.5; [blink setDelegate:self]; [placeMarker.layer addAnimation:blink forKey:@"blinkmarker"]; } } 

我不得不这样做,因为GMSMarkerLayer不关心重复animation。 我尝试在callback中重复使用animation,然后再次添加,但是没有奏效。