动画应重复几次,但事实并非如此,只是执行一次转换然后停止.
这仅在动画不透明度属性时发生,它在动画其他属性时工作正常.
这是代码:
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不透明度动画不重复所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)