1

我有一些对象只是具有重叠透明区域的 PNG 的 UIImageViews。我在透明部分重叠的地方堆叠了几张彼此靠近的图像。当其中一个被触摸时,我会播放一些音频。

为了让触摸穿过透明区域,从而让正确的对象被识别,我通过透明层传递触摸:

- (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;
    }

}

问题:当大约 3 或 4 个堆叠在屏幕上时,触摸开始出现明显的延迟。IE。顶层立即触发,但底层需要几毫秒。

有没有更快的方法可以通过我的 PNG 的透明区域传递触摸?

谢谢

4

0 回答 0