为什么旋转后使用“平移”会使视图相反?
看来这两个手势是使用不同的坐标系?旋转用的是旋转的,平移用的是普通的?
如果视图在 0' 或 360' 附近旋转,则平移将是正常的,如果视图旋转得更接近 180',“平移”将使视图更多地向相反方向旋转。
谢谢。
为什么旋转后使用“平移”会使视图相反?
看来这两个手势是使用不同的坐标系?旋转用的是旋转的,平移用的是普通的?
如果视图在 0' 或 360' 附近旋转,则平移将是正常的,如果视图旋转得更接近 180',“平移”将使视图更多地向相反方向旋转。
谢谢。
关键是在您的handRotate
方法中,您正在为视图分配旋转变换。这需要对视图在其父视图中的显示方式进行永久性更改(直到您再次修改转换),并且旋转转换将始终“添加”到您对视图的几何属性所做的任何其他更改中。
解释您所看到的行为的是视图位置与其锚点之间的相互作用,如图层几何和变换中所述。换句话说,center
您在平移时修改的属性是应用您为视图定义的所有变换的结果。另一方面,您在平移时尝试执行的操作将需要在应用转换之前修改视图的位置。
解决此问题的一种方法是通过使用 layers( CALayer
) 并修改 layerposition
属性而不是 view来重新构建您的代码center
。像:
recognizer.view.layer.position = ...
我认为这应该解决它。
(您需要导入 QuartzCore 才能编译)。
希望这可以帮助。