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

标签 ios uiimageview cgaffinetransform

我有一个问题让我“头疼”,希望有人能帮助我。

我有一个 UIView,上面显示了一个包含图像的子 UIImageView。

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

我的问题是在销毁并重新创建封闭的 View Controller 时存储和重新创建转换。

当我离开那个 View 时,我存储变换和框架...

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

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

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

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

这有效,我可以移动和拉伸(stretch)我的图像,然后在下次重新创建。

但是,如果我旋转我的图像,重新创建的图像帧会以正确的角度但会被拉伸(stretch)而不是在原始坐标处,所以我无法得到我保存的确切内容。

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

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

确定复制帧和变换会产生预期的效果吗?

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

感谢任何帮助。

最佳答案

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

问题是没有存储 anchor ,以及使用中心重建图像。因此,为了忠实地再现变换,您似乎需要存储中心、变换和 anchor 。

HTH

关于ios - 平移/调整大小/旋转后在 UIImageView 上重新创建相同的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282465/

相关文章:

ios - ButtonBarPagerTabStripViewController updateIndicator toIndex 错误

ios - Swift 中的 base64EncodedStringWithOptions 因编译错误而失败

ios - 带有完成 block 的图像动画?

ios - CGAffineTransform Rotate - 动画前跳转

ios - 通话状态栏如何影响我的 CGAffineTransform View ?

ios - 提高 iPhone UITableView 滚动性能的技巧?

objective-c - ios - 如何连接字符串以创建 url?

ios - 在 Storyboard 问题上制作图像 slider

ios - Objective C 在图像上设置中心

ios - Swift 3 中的 CGAffineTransformConCat/CGAffineTransformMakeScale