5

Ich versuche, einen GMSMarker mit einem benutzerdefinierten Symbol blinken mit einem verfallenden animierten Opazität zu machen. Die Animation sollte sich einige Male wiederholen, tut es aber nicht, sie führt nur einen Übergang aus und stoppt dann. Dies tritt nur auf, wenn die Opazitätseigenschaft animiert wird, sie funktioniert jedoch gut, wenn andere Eigenschaften animiert werden. HierGMSMarker Opazität Animation nicht wiederholt

ist der Code:

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

Dokumentation sagt sollte ich in der Lage sein, Opazität zu animieren, da es eine der Eigenschaften ist GMSMarkerLayer uns erlaubt.

Mache ich etwas falsch oder ist es ein bekannter Fehler, dem ich gerade begegnet bin?

+0

Scheint ein Fehler zu sein :( – decades

Antwort

5

war meine Lösung eines Delegaten, um die Animation hinzuzufügen:

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

Und dann, wenn die Animation Finish ich einen Rückruf bekommen hat und es wieder hinzufügen:

- (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"]; 
    } 
} 

ich das tun musste, da es dem GMSMarkerLayer egal ist, die Animation zu wiederholen. Ich habe versucht, die Animation im Callback wiederzuverwenden und sie erneut hinzuzufügen, aber das hat nicht funktioniert.

+0

es funktioniert nicht für mehrere Marker (Ex. For Loop). Gibt es eine Lösung? –

Verwandte Themen