我设法使用与此类似的方法来屏蔽视图:How to mask UIViews in iOS
但现在我需要检测这个蒙版视图中的触摸。 Gesture recognisers
和按钮会检测到bounds
区域中的触摸,基本上忽略了掩码。所以我想如果我可以从我的蒙版图像中获得CGPath
,那么处理触摸会很容易。有关如何从掩码图像中获取CGPath
的任何建议吗?
答案 0 :(得分:2)
您可以设置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;