我需要对一个视图进行缩放和旋转(使用手势实现),所以对于每个手势,我会更新当前的缩放和旋转值,类似下面这样:
self.scaleWidth *= gesture.scale; //When I detect an horizontal pinch
self.scaleHeight *= gesture.scale; //When I detect a vertical pinch
self.rotationAngle += gesture.rotationAngle; //When I detect a rotation
然后我执行以下操作来转换视图:
CGAffineTransform transform = CGAffineTransformScale(CGAffineTransformIdentity, self.scaleWidth, self.scaleHeight);
self.theSubViewToTransform.transform = CGAffineTransformRotate(transform, self.rotationAngle);
当我只进行缩放时,它工作得很好。当我先缩放再旋转时,旋转正常。但是在旋转后再次尝试缩放时,它就不太对了:缩放似乎是在旋转之后进行的,从而变形了我的图像结构。
我以为我已经做了应该做的事情来避免这种情况:每次从恒等变换开始,先进行缩放,然后旋转,但显然我错了...
有人知道我的实现有什么问题吗?
谢谢