好的,标题可能含糊不清,但这是我想做的。
我的应用程序有两个轮子。用户可以旋转外轮来匹配内轮中的值,从而根据选择的值显示一定的结果。
现在我可以通过设置 transform 属性来很好地旋转图像。但是一旦变形,我怎么知道外轮上选择了什么?
一种方法是获取转换属性并对其进行操作。
但是如何???
好的,标题可能含糊不清,但这是我想做的。
我的应用程序有两个轮子。用户可以旋转外轮来匹配内轮中的值,从而根据选择的值显示一定的结果。
现在我可以通过设置 transform 属性来很好地旋转图像。但是一旦变形,我怎么知道外轮上选择了什么?
一种方法是获取转换属性并对其进行操作。
但是如何???
我不会旋转图像本身,而是图像视图的图层。然后,您始终可以访问包含您的图像的图像视图层的变换属性。
好的,这里有一些代码。首先你必须得到 uiimageview 的层
CALayer* layer = [self.layer presentationLayer];
然后你可以像这样从图层 keypath 中读取你需要的任何旋转。
float rotationAngle = [[layer valueForKeyPath:@"transform.rotation.z"] floatValue];
如果这没有帮助,请告诉我。还有另一种获得旋转角度的方法。但它有点复杂;)
您可以根据需要以弧度或度数跟踪图像旋转了多少,然后进行一些触发以找出它指向的位置。从仿射变换中提取旋转非常困难。
编辑:这里有一些未经测试的片段可以帮助您入门:
在您的标题中:
CGFloat _userRotation;
当您应用旋转时,假设rotation
是用户旋转量的 CGFloat,以弧度表示:
myView.transform = CGAffineTransformMakeRotation(rotation);
_userRotation = rotation;
然后,您需要做的就是使用一些触发来确定您指向的图像。我无法为此提供示例代码,因为数学取决于您要执行的操作,但当前的轮换将在_userRotation
.
我不确定你问的是不是这个。它有帮助吗?