ios – GMSMarker不透明度动画不重复

ios – GMSMarker不透明度动画不重复,第1张

概述我正在尝试制作一个带有自动图标闪烁的GMSMarker,并带有衰减的动画不透明度. 动画应重复几次,但事实并非如此,只是执行一次转换然后停止. 这仅在动画不透明度属性时发生,它在动画其他属性时工作正常. 这是代码: GMSMarkerLayer* layer = marker.layer;CABasicAnimation *blink = [CABasicAnimation animationW 我正在尝试制作一个带有自动图标闪烁的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允许我们使用的属性之一.

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

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

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不透明度动画不重复所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1069552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存