我有一个 UIImageView 设置为使用以下代码在屏幕上上下移动加速度计的值:
ship.center = CGPointMake(ship.center.x, ship.center.y+shipPosition.y);
在 accelerometerDidAccelerate 方法中设置的 CGPoint 在哪里shipPosition
使用:
shipPosition.y = acceleration.x*60;
显然这很好用,非常简单。当我尝试做同样简单的事情时遇到了麻烦,根据图像的加速度改变图像的旋转。我这样做使用:
ship.transform = CGAffineTransformMakeRotation(shipPosition.y);
出于某种原因,这会导致一件非常奇怪的事情发生,因为每次调用 main 方法时,图像都会恢复到原来的位置。我可以看到图像移动到它应该在的位置的帧,但随后立即弹回。
这个问题只发生在我有旋转线时,注释掉它工作正常。我不知道这里发生了什么,我为不同的应用程序做过很多次,我从来没有遇到过这样的问题。事实上,我从我创建的另一个应用程序中复制了我的代码,它可以正常工作。
编辑:
真正让我困惑的是,当我使用以下方法将旋转角度从加速度更改为船舶位置时:
ship.transform = CGAffineTransformMakeRotation(ship.center.y/10);
当我这样做时,船实际上根据加速度计旋转但没有移动,这很疯狂,因为改变ship.center.y
意味着船的位置在改变,但事实并非如此!