gpt4 book ai didi

ios - 防止 CGAffineTransform 递增应用

转载 作者:行者123 更新时间:2023-11-29 13:48:08 24 4
gpt4 key购买 nike

我正在使用 CGAffineTransformRotate 和 CGAffineTransformTranslate 为汽车图像 (UIImageView) 在屏幕上的移动设置动画。动画由 UISlider 控制,因此当用户插入 slider 时,汽车会前进并绕过一个拐角。对于 UISlider 上的每个点,我需要能够为汽车的 CGAffineTransformRotate 和 CGAffineTransformTranslate 属性设置一个绝对值。

但是,每次调用转换时,汽车图像都会进行增量转换。因此,例如,如果我在 slider 点 0.01 处使用它:

carImage.transform = CGAffineTransformRotate(carImage.transform, degreesToRadians(5));
carImage.transform = CGAffineTransformTranslate(carImage.transform, 4.0, - 10.0);

在 slider 点 0.02 处:

carImage.transform = CGAffineTransformRotate(carImage.transform, degreesToRadians(10));
carImage.transform = CGAffineTransformTranslate(carImage.transform, 8.0, - 20.0);

当 slider 值为 0.02 时,我希望汽车处于 10 度,x 值为 8,y 值为 -20。但是,我得到的是 15 度的汽车,x 值为 12,y 值为 -30。它将我的第二次转换应用于第一次转换后获得的值。

如何将每个变换应用到我汽车的 UIImageView 的基本值?即我希望每个转换都是基于未转换的 UIImageView 的绝对转换。我不希望转换是增量的。

最佳答案

看看这是否解决了你的问题,

[UIView setAnimationBeginsFromCurrentState:NO];

另一种方式:
您可以保存先前的 slider 值,当您更改 slider 时,获取先前和当前 slider 值之间的差值,并使用该差值计算相对于先前变换的新变换。例如,如果前一个 slider 值为 0.01,而当前 slider 值为 0.02,则差异为 0.01,因此将 4.0 添加到 tx,将 -10 添加到 ty。

关于ios - 防止 CGAffineTransform 递增应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com