我成功地使用了与此处类似的方法屏蔽了视图:如何在iOS中屏蔽UIView,但现在我需要检测这个被屏蔽的视图上的触摸。手势识别器和按钮会在边界区域内检测到触摸,基本上忽略掉了遮罩。因此,我认为如果能从我的遮罩图像获取CGPath,那么处理触摸就很容易了。有关如何从遮罩图像中获取CGPath的任何建议?
我成功地使用了与此处类似的方法屏蔽了视图:如何在iOS中屏蔽UIView,但现在我需要检测这个被屏蔽的视图上的触摸。手势识别器和按钮会在边界区域内检测到触摸,基本上忽略掉了遮罩。因此,我认为如果能从我的遮罩图像获取CGPath,那么处理触摸就很容易了。有关如何从遮罩图像中获取CGPath的任何建议?
UIGestureRecognizer
的代理并覆盖 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
方法。- (CGPoint)locationInView:(UIView *)view
2. 找出该位置图像的 alpha 通道。为此,请使用以下代码(为了效率,您可以提前重新计算整个图像的透明度值,并将它们存储到缓冲区中,这样您就不必每次复制 alpha 缓冲区。我在这里保持简单,仅针对单个像素进行操作。如果您想了解如何同时处理整个图像,请参阅此帖子)。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;