我正在使用我发现的一段代码通过UIImageView
的透明部分传递触摸事件。我正在继承UIImageView
并添加此内容:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
unsigned char pixel[1] = {0};
CGContextRef context = CGBitmapContextCreate(pixel,
1, 1, 8, 1, NULL,
kCGImageAlphaOnly);
UIGraphicsPushContext(context);
[self.image drawAtPoint:CGPointMake(-point.x, -point.y)];
UIGraphicsPopContext();
CGContextRelease(context);
CGFloat alpha = pixel[0]/255.0;
BOOL transparent = alpha < 0.01;
if(transparent){
return NO;
} else {
return YES;
}
}
到目前为止,它在我的iPad版本中运行良好。但是,在我的iPhone版本中,我将图像帧设置为图像实际大小的一半(self.image.frame.size.width/2
)。这段代码以奇怪的方式干扰我的平移手势,如果我触摸图像的左上角我无法访问我的平移手势,但我可以将其访问到最右下方,将实际图像移到透明区域。
删除代码会使平移手势恢复正常。但是,我仍然希望能够忽略透明部件上的触摸。有谁知道这段代码的哪一部分弄乱了我的触摸点或其他任何原因,它的表现如此?
由于
答案 0 :(得分:0)
我知道这个问题很老,但是我只需要在项目中使用它,我的问题是我是手动设置imageView框架。有助于更改代码,因此调整大小只能通过转换来完成。
如果imageView最初与其中的图像大小相同,则可以使用此代码,它将与之后应用于imageView的任何变换一起使用。
因此,在您的iPhone版本中,您可以将imageView的框架设置为其中图像的大小,然后对其应用缩放变换,使其尺寸减小一半。