我设法使用与这里类似的方法屏蔽视图:How to mask UIViews in iOS,但现在我需要检测这个屏蔽视图中的触点。Gesture recognisers和按钮将检测bounds区域中的触摸,基本上忽略掩码。所以我想如果我可以从我的蒙版图像中获得CGPath,那么处理触摸就会很容易。关于如何从蒙版图像中获取CGPath有什么建议吗?
发布于 2012-12-18 21:08:30
您可以设置UIGestureRecognizer的委托并重写- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
1.获取触摸在识别器视图中的位置
- (CGPoint)locationInView:(UIView *)view
2.找出该位置的图像的alpha通道。为此,请使用以下代码(为了提高效率,您可以提前重新计算整个图像的透明值,并将它们存储到缓冲区中,这样您就不必每次都复制alpha缓冲区。我在这里保持了简单,并且只使用了一个像素。如果你想看看如何一次完成整个图像,看看这个post。
unsigned char pixelData[1] = {0};
CGContextRef context = CGBitmapContextCreate(pixelData, 1, 1, 8, 1, NULL, kCGImageAlphaOnly);
UIGraphicsPushContext(context);
[im drawAtPoint:CGPointMake(-point.x, -point.y)];
UIGraphicsPopContext();
CGContextRelease(context);
CGFloat alphaChannel = pixel[0]/255.0;
BOOL transparent = alphaChannel < 0.01;https://stackoverflow.com/questions/13933335
复制相似问题