平移/调整大小/旋转后在UIImageView上重新创建相同的变换

时间:2014-06-18 09:53:46

标签: ios uiimageview cgaffinetransform

我有一个问题,这让我感到很头疼'并希望有人可以帮助我。

我有一个带有子UIImageView的UIView,它包含一个图像。

使用手势,我可以平移,缩放和旋转该图像。在此过程期间,锚点可以改变以确保缩放/旋转是手势的两个手指之间的点。 CGAffineTransforms用于实现这一点并且运行良好。

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

当我离开那个视图时,我存储了变换和帧......

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

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

....当我重新创建该视图时,我设置了我的imageView的框架和变换......

self.imageView.transform = mySavedTransform;
self.imageView.frame = mySavedFrame;

这有效,我可以移动和拉伸我的图像,然后再次重新创建。

然而,如果我旋转我的图像,重新创建的图像框架的角度正确但是被拉伸而不是原始坐标,所以我不能得到我保存的内容。

在变换之前设置帧对旋转具有相同的不良影响。

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

当然,再现帧和变换会产生预期的效果吗?

这是通常的做法,还是我错过了什么?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

对于那些兴趣,这是有分类的。

问题是没有存储的锚点,以及使用中心来重新创建图像。因此,为了忠实地再现转换,您似乎需要存储中心,转换和锚定。

HTH