在目标 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的主要内容,如果未能解决你的问题,请参考以下文章

图片处理-opencv-3.图像缩放、旋转、翻转、平移

opencv 图像平移缩放旋转翻转 图像仿射变换

(转)Java中Image的水平翻转缩放与自由旋转操作

图像的读取缩放平移旋转翻转仿射透射

Arcgis应用栅格数据翻转(Flip)镜像(Mirror)重缩放(Rescale)旋转(Rotate)移位(Shift)弯曲(Warp)

Vue图片浏览组件v-viewer,支持旋转缩放翻转等操作