使用Pan,Pinch和Rotate之类的手势识别器,是否可以在UIImageView中操作UIImage?
每当我尝试为UIImage定义手势识别器时,我都会收到错误说明
没有可见的UIImage支持'addGestureRecognizer:'
使用此代码:
UIRotationGestureRecognizer *rotateGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateImage:)];
[imageStrip addGestureRecognizer:rotateGesture];
无论如何在不转换UIImageView的情况下转换UIImageView内的UIImage?
答案 0 :(得分:5)
您可以为任何类型的UIView
添加手势识别器,并且在您的事件处理方法中,您可以将UIImage
重新绘制到新创建的CGContextRef
。此上下文必须使用CGContextRotateCTM
,CGContextScaleCTM
,CGContextTranslateCTM
进行转换,并使用与从手势识别器接收的参数匹配的参数进行调用。这是艰难的方式。
或者,您可以使用图像创建一个临时UIImageView
,然后使用手势识别器对其进行转换,然后将其渲染为CGContextRef
,并将转换后的图像从此上下文中移除。
当然可行,但并非无足轻重。
答案 1 :(得分:2)
UIGestureRecognizer
只能附加到UIView
- UIImage
不是UIView
的后代。
这是因为UIView
(或它的后代)可以接收触摸 - UIImage
不能。
请参阅Gestures Recognizers Are Attached to a View。
用户完成操作后,您可以根据参数重新计算/重新呈现UIImage
。关于如何做到这一点:这实际上取决于你想要达到的目标。