防止CGAffineTransform逐步应用

| 我正在使用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是绝对的。我不希望转换是增量的。     
已邀请:
        看看这是否能解决您的问题,
[UIView setAnimationBeginsFromCurrentState:NO];
另一种方式: 您可以保存先前的滑块值,并且在更改滑块时,获取先前和当前滑块值之间的差,并使用该差计算相对于先前变换的新变换。例如,如果先前的滑块值是0.01,而当前滑块值是0.02,则差值为0.01,因此将tx加4.0,并将ty加-10。     

要回复问题请先登录注册