我正在尝试使用图片初始化的一些标记进行动画处理,如下所示RMMarker *marker = [[RMMarker alloc] initWithUIImage:lImage anchorPoint:lPoint];
我在地图上得到一张静态图片没问题。 现在,我需要它比其他注释更明显,所以我想让它眨眼。
这是我已经尝试过的:
在注记图层上创建缩放动画
[CATransaction begin];
[CATransaction setAnimationDuration:0.70];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
CABasicAnimation *bounceAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
bounceAnimation.repeatCount = MAXFLOAT;
bounceAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.1, 1.1, 1.0)];
bounceAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.8, 0.8, 1.0)];
bounceAnimation.removedOnCompletion = NO;
bounceAnimation.autoreverses = YES;
[layer addAnimation:bounceAnimation forKey:@"animateScale"];
[CATransaction commit];
这很好用,除了我的标注视图也闪烁,因为它共享同一层(并且Mapbox在跟踪模式下与动画混杂,导致方向错误,因为它随着用户的每次移动而重置)。
在注记图层上创建blink动画
[CATransaction begin];
[CATransaction setAnimationDuration:0.60];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
opacityAnimation.repeatCount = MAXFLOAT;
opacityAnimation.fromValue = [NSNumber numberWithFloat:1.0];
opacityAnimation.toValue = [NSNumber numberWithFloat:0.3];
opacityAnimation.removedOnCompletion = NO;
opacityAnimation.autoreverses = YES;
[layer addAnimation:opacityAnimation forKey:@"animateOpacity"];
[CATransaction commit];
这不太明显,但这次注释方向是正确的。我的标注视图仍然在图层上闪烁。
我想做什么
我需要一种方法来设置标记图像的动画,而不会影响图层。
我使用的最好的动画是我尝试的第一个动画,没有旋转问题。
到目前为止,我无法为UIImage设置动画,因为它没有addAnimation: forKey:
调用。
我从未玩过很多动画,所以任何帮助或指导都会受到赞赏。
答案 0 :(得分:0)
您使用CABasicAnimation
进入了正确的轨道,因为这是用于SDK中动画用户位置注释的内容。你可以在这里看到这个:
你能详细说明一下吗?
这很好用,除了我的标注视图也闪烁,因为它共享同一层(并且Mapbox在跟踪模式下与动画混杂,导致方向错误,因为它随着用户的每次移动而重置)。
你确实提出了一个很好的观点,即标注是一个子图层,所以它也会闪烁。此用例未被考虑 - 您是否可以取消选择注释,从而隐藏标注?
但是后者是什么意思?