我正在使用 CGAffineTransformRotate 和 CGAffineTransformTranslate 在屏幕上为汽车图像 (UIImageView) 的进度设置动画。动画由 UISlider 控制,因此当用户前进滑块时,汽车会前进并绕过拐角。对于 UISlider 上的每个点,我需要能够为汽车的 CGAffineTransformRotate 和 CGAffineTransformTranslate 属性设置一个绝对值。
然而,每次调用变换时,汽车图像都会被增量变换。因此,例如,如果我在滑块点 0.01 处使用它:
carImage.transform = CGAffineTransformRotate(carImage.transform, degreesToRadians(5));
carImage.transform = CGAffineTransformTranslate(carImage.transform, 4.0, - 10.0);
这在滑块点 0.02 处:
carImage.transform = CGAffineTransformRotate(carImage.transform, degreesToRadians(10));
carImage.transform = CGAffineTransformTranslate(carImage.transform, 8.0, - 20.0);
当滑块值为 0.02 时,我希望汽车处于 10 度,x 值为 8,y 值为 -20。但是,我得到的是 15 度的汽车,x 值为 12,y 值为 -30。它将我的第二次转换应用于第一次转换后得到的值。
如何将每个转换应用于我的汽车 UIImageView 的基本值?即我希望每个转换都是基于未转换的 UIImageView 的绝对转换。我不希望转换是增量的。