我遇到了一个问题,这使我感到“头痛”,并希望有人可以帮助我。

我有一个UIView,顶部有一个子UIImageView,包含一个图像。

使用手势,我可以平移,缩放和旋转该图像。在此过程中,锚点可能会更改以确保缩放/旋转位于手势的两个手指之间。 CGAffineTransforms用于实现此目的,并且效果很好。

我的问题是在销毁并重新创建封闭的视图控制器时存储并重新创建转换。

当我离开该视图时,我将存储变换和框架...

-(CGAffineTransform)imageViewTransform
{
    return self.testImageView.transform;
}

-(CGRect)imageViewFrame
{
    return self.testImageView.frame;
}

....当我重新创建该视图时,我设置了imageView的框架和变换...
self.imageView.transform = mySavedTransform;
self.imageView.frame = mySavedFrame;

这可行,我可以移动和拉伸图像,然后在下次重新创建。

但是,如果我旋转图像,则重新创建的图像框架将以正确的角度显示,但会被拉伸而不是原始坐标,因此我无法准确获得保存的图像。

在变换之前设置帧会对旋转产生相同的不良影响。

我的问题是为什么我不能使用上述技术重新创建精确缩放,旋转和定位的UIImageView?

确定要重现帧并进行转换会产生预期的效果吗?

这是执行此操作的常用方法,还是我错过了一些东西?

任何帮助表示赞赏。

最佳答案

对于那些兴趣,这是排序。

问题是没有存储的锚点,以及使用中心进行图像重现。因此,要忠实地复制变换,您似乎需要存储中心,变换和锚点。

高温超导

10-08 11:16