移动/旋转用它的更新位置和倾斜的对象?(Moving/Rotating an object usin

2019-10-29 02:04发布

这基本上是一个简单的问题,我不能得到解决?

  1. 所以,我有的目的UIImageView在其上,我实现某个帧的CAAnimation与旋转和平移,并且它是在新的坐标(x,y)和由一些度已被旋转。

  2. 这个动画精美的作品。 但是,如果我再这样做,从该国的旋转和运动,我希望对象使用新的框架和新的属性从第1步的旋转后,再次通过新的角度旋转。

截至目前,当我再次尝试旋转,它使用标准的状态和帧大小(初始化期间),并在其上进行旋转...

And by this I mean... If I have a square of frame (100, 200, 10, 10), and I rotate it by 45 degrees, the shape is now a different square, with different frame size and end points compared to the original square, and I implement a new rotation by (say) 152 degrees on it and it needs to perform a rotation on the newer square... But it turns out that it uses the same frame size as the previous one (x,y, 10, 10).

我如何能继续旋转/其最新位置和状态移动对象?


:( 如果你需要看动画的代码)

这是我的动画,它涉及到简单的旋转和运动的代码! http://pastebin.com/cR8zrKRq

Answer 1:

您需要保存在animationDidStop的旋转步骤和更新对象的旋转:方法。 所以,在你的CAS,你应该申请:

-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{ 
   //angle is global
   CATransform3D rotationTransform = CATransform3DMakeRotation((angle%4)*M_PI_4, 0, 0, 1);
   [object.layer setTransform:rotationTransform];
   object.center = tempFrame; //already there
}

其中角度的动画(步骤)与值0,1,2,3的整数计数器。 我的步骤是M_PI_4。 有可能是一个更好的解决问题的办法,但是这应该做的伎俩



文章来源: Moving/Rotating an object using it's updated position and tilt?