视图旋转“丑陋”

时间:2013-12-23 12:52:31

标签: ios iphone objective-c uikit core-graphics

我正在为iOS创建一款汽车驾驶游戏,但存在一个问题:

我将这些行添加到我的ViewController.m:

_carView.transform = CGAffineTransformMakeRotation(steeringTemp-45);

steeringTemp是一个浮动变量,由左右转向按钮改变。

但是当我运行应用程序并按下转向按钮时,汽车以难看的方式旋转。看起来中心点每次都在变化,汽车像三角形一样旋转。我试图将原点设置为_carView的中心,这是一个图像视图,但它不起作用。

1 个答案:

答案 0 :(得分:4)

首先让我告诉你,你应该使用弧度,而不是度数。您可以使用此宏:

#define DEGREES_TO_RADIANS(angle) (angle * M_PI / 180.0)

并将其包裹在你的价值观中:

CGAffineTransformMakeRotation(DEGRESS_TO_RADIANS(steeringTemp-45));

如果您:

,第二次通常会出错
  • 使用错误的anchorPoint旋转(通常用时钟指针发生)
  • 不要注意变换的顺序

定位点

您需要确保您的锚点指向您想要的位置。 anchorPoint默认为中心,但您可以将其设置为视图支持的图层中您喜欢的任何点。锚点具有相对坐标,因此它从0到1.(0,0)是左上角,(1,1)是你的右下角。

您可以这样设置:

_carView.layer.anchorPoint = CGPointMake(0, 0);

变换顺序很重要

此外,如果您应用更多变换,请务必注意这些变换的顺序。之前的变换将始终影响下一个变换。旋转后跟翻译与翻译后跟旋转不同。