The*_*heo 6 iphone google-maps google-maps-markers ios google-maps-sdk-ios
我正在尝试制作一个带有自动图标闪烁的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"];
Run Code Online (Sandbox Code Playgroud)
文档说我应该能够设置不透明度的动画,因为它是GMSMarkerLayer允许我们使用的属性之一.
我做错了什么或者是我刚遇到的已知错误?
我的解决方案是为动画添加一个委托:
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"];
Run Code Online (Sandbox Code Playgroud)
然后当动画完成后,我得到一个回调并再次添加:
- (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"];
}
}
Run Code Online (Sandbox Code Playgroud)
我不得不这样做,因为GMSMarkerLayer并不关心重复动画.我尝试在回调中重复使用动画并再次添加它,但这不起作用.
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |