我正在使用CGAffineTransformRotate和CGAffineTransformTranslate在屏幕上爲汽車圖像(UIImageView)的進度設置動畫。動畫由UISlider控制,以便用戶前進滑塊時,汽車前進並在角落裏開車。對於UISlider上的每個點,我需要能夠爲汽車的CGAffineTransformRotate和CGAffineTransformTranslate屬性設置一個絕對值。防止CGAffineTransform逐漸應用
但是,每次調用變換時,汽車圖像都會逐漸變換。所以,如果,例如,我用這個在滑塊點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類引用:「如果動畫未在進行或在動畫塊之外調用,則此方法不執行任何操作。」 – beev
@beev,好的。或者,您可以保存上一個滑塊值,並在更改滑塊時,獲取之前和當前滑塊值之間的差異,並使用該差異計算相對於上一個變換的新變換。例如,如果上一個滑塊值爲0.01,當前滑塊值爲0.02,則差異爲0.01,因此將tx添加到4.0並將-10添加到ty – EmptyStack
感謝您的幫助。一段時間以來,我一直在嘗試很多變體,但沒有任何東西讓我通過滑塊精確控制動畫。我決定嘗試用更傳統的方式來解決這個問題。 – beev