0

好的,标题可能含糊不清,但这是我想做的。

我的应用程序有两个轮子。用户可以旋转外轮来匹配内轮中的值,从而根据选择的值显示一定的结果。

现在我可以通过设置 transform 属性来很好地旋转图像。但是一旦变形,我怎么知道外轮上选择了什么?

一种方法是获取转换属性并对其进行操作。

但是如何???

4

2 回答 2

1

我不会旋转图像本身,而是图像视图的图层。然后,您始终可以访问包含您的图像的图像视图层的变换属性。

好的,这里有一些代码。首先你必须得到 uiimageview 的层

CALayer* layer = [self.layer presentationLayer];

然后你可以像这样从图层 keypath 中读取你需要的任何旋转。

float rotationAngle = [[layer valueForKeyPath:@"transform.rotation.z"] floatValue];

如果这没有帮助,请告诉我。还有另一种获得旋转角度的方法。但它有点复杂;)

于 2012-10-22T16:11:39.143 回答
0

您可以根据需要以弧度或度数跟踪图像旋转了多少,然后进行一些触发以找出它指向的位置。从仿射变换中提取旋转非常困难。

编辑:这里有一些未经测试的片段可以帮助您入门:

在您的标题中:

CGFloat _userRotation;

当您应用旋转时,假设rotation是用户旋转量的 CGFloat,以弧度表示:

myView.transform = CGAffineTransformMakeRotation(rotation);
_userRotation = rotation;

然后,您需要做的就是使用一些触发来确定您指向的图像。我无法为此提供示例代码,因为数学取决于您要执行的操作,但当前的轮换将在_userRotation.

我不确定你问的是不是这个。它有帮助吗?

于 2012-10-22T16:34:39.600 回答