Ios GMSMarker不透明度动画不重复
我正试图让一个带有自定义图标的GMSMarker以衰减的动画不透明度闪烁。 动画应该重复自己几次,但它没有,它只执行一次转换,然后停止。 这仅在设置不透明度属性动画时发生,在设置其他属性动画时效果良好 代码如下:Ios GMSMarker不透明度动画不重复,ios,iphone,google-maps,google-maps-markers,google-maps-sdk-ios,Ios,Iphone,Google Maps,Google Maps Markers,Google Maps Sdk Ios,我正试图让一个带有自定义图标的GMSMarker以衰减的动画不透明度闪烁。 动画应该重复自己几次,但它没有,它只执行一次转换,然后停止。 这仅在设置不透明度属性动画时发生,在设置其他属性动画时效果良好 代码如下: GMSMarkerLayer* layer = marker.layer; CABasicAnimation *blink = [CABasicAnimation animationWithKeyPath:@"opacity"]; blink.fromValue = [NSNumber
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"];
文档说我应该能够设置不透明度的动画,因为这是GMSMarkerLayer允许我们设置的属性之一
我是做错了什么,还是刚刚遇到了一个已知的bug?我的解决方案是在动画中添加一个代理:
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"];
当动画完成后,我会收到一个回调并再次添加它:
- (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不关心重复动画。我尝试在回调中重用动画并再次添加,但没有成功。对于多个标记(例如for Loop)无效。有什么解决办法吗?