0

使用诸如平移、捏合和旋转等手势识别器,是否可以在 UIImageView 中操作 UIImage?

每当我尝试为 UIImage 定义手势识别器时,都会收到一条错误消息

没有可见的 UIImage 支持 'addGestureRecognizer:'

使用此代码:

UIRotationGestureRecognizer *rotateGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateImage:)];
[imageStrip addGestureRecognizer:rotateGesture];

无论如何在不转换 UIImageView 的情况下转换 UIImageView 内的 UIImage 吗?

4

2 回答 2

5

您可以将手势识别器添加到任何类型,UIView并且在您的事件处理方法中,您可以重绘UIImage到新创建的CGContextRef. 这个上下文必须用CGContextRotateCTM,进行转换CGContextScaleCTMCGContextTranslateCTM使用与您从手势识别器接收到的参数匹配的参数调用该上下文。这是艰难的道路。

或者,您可以使用图像创建一个划痕UIImageView,使用手势识别器对其进行转换,然后将其渲染为 aCGContextRef并从该上下文中获取转换后的图像。

当然可行,但并非微不足道。

于 2012-11-22T19:41:12.637 回答
2

UIGestureRecognizer只能附加到一个UIView-UIImage不是 的后代UIView

这是因为一个UIView(或它的后代)可以接收触摸 -UIImage不能。

请参阅手势识别器附加到视图

您可以在用户完成操作后重新计算/重新渲染UIImage基于参数。关于如何做到这一点:这实际上取决于您想要实现的目标。

于 2012-11-22T19:33:03.607 回答