【问题标题】:Recreating same transform on UIImageView after pan/resize/rotate平移/调整大小/旋转后在 UIImageView 上重新创建相同的变换
【发布时间】:2014-06-18 09:53:45
【问题描述】:

我遇到了一个让我“头疼”的问题,希望有人可以帮助我。

我有一个 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?

再现帧和变换肯定会产生预期的效果吗?

这是执行此操作的常用方法,还是我遗漏了什么?

任何帮助表示赞赏。

【问题讨论】:

    标签: ios uiimageview cgaffinetransform


    【解决方案1】:

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

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

    HTH

    【讨论】:

      猜你喜欢
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多