Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios GMSMarker不透明度动画不重复_Ios_Iphone_Google Maps_Google Maps Markers_Google Maps Sdk Ios - Fatal编程技术网

Ios 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

我正试图让一个带有自定义图标的GMSMarker以衰减的动画不透明度闪烁。 动画应该重复自己几次,但它没有,它只执行一次转换,然后停止。 这仅在设置不透明度属性动画时发生,在设置其他属性动画时效果良好

代码如下:

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)无效。有什么解决办法吗?