根据图片的像素 手势穿透问题

新建一个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.0f;
    NSLog(@"------%.2f---",alpha);
    BOOL transparent = alpha < 0.01f;
    
    return !transparent;
}

 这样的话,这个图片的像素小于0.01的地方就不会响应手势,像素大于0.01的地方才会响应手势。