Ios 防止增量应用CGAffineTransform
我正在使用CGAffineTransformRotate和CGAffineTransformTranslate在屏幕上为汽车图像(UIImageView)的进度设置动画。动画由UISlider控制,因此当用户推进滑块时,汽车前进并在拐角处行驶。对于UISlider上的每个点,我需要能够为汽车的CgaffinetTransformRotate和CgaffinetTransformTranslate属性设置一个绝对值 但是,每次调用变换时,汽车图像都会进行增量变换。例如,如果我在滑块点0.01处使用:Ios 防止增量应用CGAffineTransform,ios,cocoa-touch,uiimageview,uislider,cgaffinetransform,Ios,Cocoa Touch,Uiimageview,Uislider,Cgaffinetransform,我正在使用CGAffineTransformRotate和CGAffineTransformTranslate在屏幕上为汽车图像(UIImageView)的进度设置动画。动画由UISlider控制,因此当用户推进滑块时,汽车前进并在拐角处行驶。对于UISlider上的每个点,我需要能够为汽车的CgaffinetTransformRotate和CgaffinetTransformTranslate属性设置一个绝对值 但是,每次调用变换时,汽车图像都会进行增量变换。例如,如果我在滑块点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的基本值?Ie我希望每个变换都是基于未转换的UIImageView的绝对变换。我不希望转换是增量的。看看这是否能解决您的问题
[UIView setAnimationBeginsFromCurrentState:NO];
另一种方式:可以保存上一个滑块值,更改滑块时,获取上一个和当前滑块值之间的差值,并使用该差值计算相对于上一个变换的新变换。例如,如果上一个滑块值为0.01,而当前滑块值为0.02,则差值为0.01,因此将4.0添加到tx,将-10添加到ty。看看这是否解决了您的问题
[UIView setAnimationBeginsFromCurrentState:NO];
另一种方式:可以保存上一个滑块值,更改滑块时,获取上一个和当前滑块值之间的差值,并使用该差值计算相对于上一个变换的新变换。例如,如果上一个滑块值为0.01,而当前滑块值为0.02,则差值为0.01,因此将4.0添加到tx,将-10添加到ty。感谢您的回复。我试过了,但没用。在UIView类引用中:“如果动画未在进行中或在动画块外部调用,则此方法不会执行任何操作。”@beev,好的。或者,可以保存上一个滑块值,在更改滑块时,获取上一个滑块值与当前滑块值之间的差值,并使用该差值计算相对于上一个变换的新变换。例如,如果上一个滑块值为0.01,而当前滑块值为0.02,则差值为0.01,因此将4.0添加到tx,将-10添加到TY感谢您的帮助。一段时间以来,我一直在尝试这方面的许多变化,但没有任何东西可以让我通过滑块获得对动画的精确控制。我决定试着用一种更传统的方式去做。谢谢你的回复。我试过了,但没用。在UIView类引用中:“如果动画未在进行中或在动画块外部调用,则此方法不会执行任何操作。”@beev,好的。或者,可以保存上一个滑块值,在更改滑块时,获取上一个滑块值与当前滑块值之间的差值,并使用该差值计算相对于上一个变换的新变换。例如,如果上一个滑块值为0.01,而当前滑块值为0.02,则差值为0.01,因此将4.0添加到tx,将-10添加到TY感谢您的帮助。一段时间以来,我一直在尝试这方面的许多变化,但没有任何东西可以让我通过滑块获得对动画的精确控制。我决定试着用一种更传统的方式去做。