HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – GMSMarker不透明度动画不重复大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试制作一个带有自动图标闪烁的GMsmarker,并带有衰减的动画不透明度. @H_801_5@动画应重复几次,但事实并非如此,只是执行一次转换然后停止. @H_801_5@这仅在动画不透明度属性时发生,它在动画其他属性时工作正常.

这是@L_675_4@:

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允许我们使用的属性之一.

我做错了什么或者是我刚遇到的已知错误

@H_403_22@解决方法
我的解决方案是为动画添加一个委托:

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并不关心重复动画.我尝试在回调中重复使用动画并再次添加它,但这不起作用.

大佬总结

以上是大佬教程为你收集整理的ios – GMSMarker不透明度动画不重复全部内容,希望文章能够帮你解决ios – GMSMarker不透明度动画不重复所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。