gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:54:19 27 4
gpt4 key购买 nike

我正在尝试使带有自定义图标的 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 允许我们使用的属性之一。

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

最佳答案

我的解决方案是向动画添加委托(delegate):

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 不透明度动画不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22678575/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com