1

为什么旋转后使用“平移”会使视图相反?

看来这两个手势是使用不同的坐标系?旋转用的是旋转的,平移用的是普通的?

如果视图在 0' 或 360' 附近旋转,则平移将是正常的,如果视图旋转得更接近 180',“平移”将使视图更多地向相反方向旋转。

谢谢。

在此处输入图像描述

4

1 回答 1

3

关键是在您的handRotate方法中,您正在为视图分配旋转变换。这需要对视图在其父视图中的显示方式进行永久性更改(直到您再次修改转换),并且旋转转换将始终“添加”到您对视图的几何属性所做的任何其他更改中。

解释您所看到的行为的是视图位置与其锚点之间的相互作用,如图层几何和变换中所述。换句话说,center您在平移时修改的属性是应用您为视图定义的所有变换的结果。另一方面,您在平移时尝试执行的操作将需要在应用转换之前修改视图的位置。

解决此问题的一种方法是通过使用 layers( CALayer) 并修改 layerposition属性而不是 view来重新构建您的代码center。像:

recognizer.view.layer.position = ...

我认为这应该解决它。

(您需要导入 QuartzCore 才能编译)。

希望这可以帮助。

于 2012-07-29T07:24:35.333 回答