在目标 c 中翻转缩放和旋转的 uiview
Posted
技术标签:
【中文标题】在目标 c 中翻转缩放和旋转的 uiview【英文标题】:Flip a scaled and rotated uiview in objective c 【发布时间】: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);
这样的输出是视图正确翻转并且原始比例因子也得到了维护,但旋转没有。 这是解释问题的图像 -
原始图像(老虎视图必须在水平轴上翻转)-
在上面的代码之后翻转图像(看到比例保持但旋转角度没有并且图像正确翻转) -
任何帮助将不胜感激!
【问题讨论】:
【参考方案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 个。以上是关于在目标 c 中翻转缩放和旋转的 uiview的主要内容,如果未能解决你的问题,请参考以下文章
Arcgis应用栅格数据翻转(Flip)镜像(Mirror)重缩放(Rescale)旋转(Rotate)移位(Shift)弯曲(Warp)