Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 防止增量应用CGAffineTransform_Ios_Cocoa Touch_Uiimageview_Uislider_Cgaffinetransform - Fatal编程技术网

Ios 防止增量应用CGAffineTransform

Ios 防止增量应用CGAffineTransform,ios,cocoa-touch,uiimageview,uislider,cgaffinetransform,Ios,Cocoa Touch,Uiimageview,Uislider,Cgaffinetransform,我正在使用CGAffineTransformRotate和CGAffineTransformTranslate在屏幕上为汽车图像(UIImageView)的进度设置动画。动画由UISlider控制,因此当用户推进滑块时,汽车前进并在拐角处行驶。对于UISlider上的每个点,我需要能够为汽车的CgaffinetTransformRotate和CgaffinetTransformTranslate属性设置一个绝对值 但是,每次调用变换时,汽车图像都会进行增量变换。例如,如果我在滑块点0.01处使用

我正在使用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感谢您的帮助。一段时间以来,我一直在尝试这方面的许多变化,但没有任何东西可以让我通过滑块获得对动画的精确控制。我决定试着用一种更传统的方式去做。