在目标c中翻转缩放和旋转的uiview

时间:2015-05-26 05:18:09

标签: ios objective-c uiview

我试图在水平轴上翻转缩放和旋转的uiview。 这是使用的代码 -

CGFloat xScale = selectedFrame.transform.a;
CGFloat yScale = selectedFrame.transform.d;
selectedFrame.layer.transform = CATransform3DScale(CATransform3DMakeRotation(M_PI, 0, 1, 0),xScale, yScale,-1);

这样的输出是视图正确翻转并且原始比例因子也被手动控制但旋转不是。 以下是解释问题的图片 -

原始图像(虎视图必须在水平轴上翻转) - http://cloudart.com.au/projects/appscreenshots/Original_image.png

在上面的代码之后翻转图像(请参见维持比例但旋转角度不正确且图像s正确翻转) - http://cloudart.com.au/projects/appscreenshots/Flipped_image.png

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:2)

要翻转图像,您使用围绕Y轴旋转M_PI。要旋转图像,需要在Z轴周围应用另一个不同的旋转。这是两种不同的变换。您可以使用CATransform3DConcat组合它们。然后,您可以缩放生成的变换。

CATransform3D transform = CATransform3DConcat(CATransform3DMakeRotation(zRotation, 0, 0, 1),CATransform3DMakeRotation(M_PI, 0, 1, 0));
[layer setTransform:CATransform3DScale(transform,xScale, yScale,1)];

原始代码的问题在于您只应用Y轴变换。

我确信有更优雅的方法可以做到这一点,但这可以在我的模拟器上运行。