ios – 使用CABasicAnimation多次旋转UIImageView

我正在使用CABasicAnimation顺时针旋转UI ImageView 90度,但是在最初90度旋转之后,我需要将其从其位置再旋转90度.
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.duration = 10;
animation.additive = YES;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.fromValue = [NSNumber numberWithFloat:degrees_TO_radians(0)];
animation.tovalue = [NSNumber numberWithFloat:degrees_TO_radians(90)];
[_myview.layer addAnimation:animation forKey:@"90rotation"];

使用上面的代码最初起作用,图像保持在90度角.如果我再次打电话给它,使其旋转90度,则动画将通过跳回到0并旋转90度,而不是90到180度.

我的印象是animation.additive = YES;将会使进一步的动画以当前状态为起点.

有任何想法吗?

解决方法

通过角度增量值查看我的代码
static int imgAngle=0;
- (void)doAnimation
{
  CABasicAnimation *animation = [CABasicAnimation   animationWithKeyPath:@"transform.rotation.z"];
   animation.duration = 5;
  animation.additive = YES;
  animation.removedOnCompletion = NO;
  animation.fillMode = kCAFillModeForwards;
  animation.fromValue = [NSNumber numberWithFloat:degrees_TO_radians(imgAngle)];
  animation.tovalue = [NSNumber numberWithFloat:degrees_TO_radians(imgAngle+90)];
 [self.imgView.layer addAnimation:animation forKey:@"90rotation"];

  imgAngle+=90;
  if (imgAngle>360) {
      imgAngle = 0;
  }
}

以上代码只是想法.它没有测试

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...