【问题标题】:Flip a scaled and rotated uiview in objective c在目标 c 中翻转缩放和旋转的 uiview
【发布时间】:2015-05-26 05:18:09
【问题描述】:

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

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

这样的输出是视图正确翻转并且原始比例因子也得到了维护,但旋转没有。 这是解释问题的图像 -

原始图像(老虎视图必须在水平轴上翻转)-

在上面的代码之后翻转图像(看到比例保持但旋转角度没有并且图像正确翻转) -

任何帮助将不胜感激!

【问题讨论】:

    标签: ios objective-c uiview


    【解决方案1】:

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

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

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

    我确信有一种更优雅的方法可以做到这一点,但这适用于我的模拟器。

    【讨论】:

    • 这行不通,而且现在也弄乱了翻转工作。
    • 又看了一遍你的问题,我改了答案。
    • 请问,参数“zRotation”是什么?非常感谢
    • zRotation 应设置为图像所需的旋转角度
    • 如果我需要转换所有轴怎么办? X、Y 和 Z。CATransform3DConcat 似乎只需要 2 个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2014-03-23
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多